文章目录
- 0.摘要
- 1.布尔类型
- 2.数值类型
- 3.列表
- 3.1创建列表
- 3.2列表切片
- 3.3向列表中新增项
- 3.4在列表中检索值
- 3.5从列表中删除元素
- 3.6布尔上下文环境中的列表
- 4.元组
- 4.1布尔上下文环境中的元组
- 4.2同时赋多个值
- 5.集合
- 5.1创建集合
- 5.2修改集合
- 5.3从集合中删除元素
- 5.4常见集合操作
- 5.5布尔上下文环境中的集合
- 6.字典
- 6.1创建字典
- 6.2修改字典
- 6.3混合值字典
- 6.4布尔上下文环境中的字典
- 7.None
0.摘要
中, 每个值都有一种数据类型,但您并不需要声明变量的数据类型。那该方式是如何运作的呢?
根据每个变量的初始赋值情况分析其类型,并在内部对其进行跟踪。我们将选择其中的一些进行介绍。
1.布尔类型
有两个被巧妙地命名为
和
的常量,可用于对布尔类型的直接赋值。表达式也可以计算为布尔类型的值。在某些地方(如
语句),
所预期的就是一个可计算出布尔类型值的表达式。这些地方称为布尔类型上下文环境。事实上,可在布尔类型上下文环境中使用任何表达式,而
将试图判断其真值。在布尔类型上下文环境中,不同的数据类型对于何值为真、何值为假有着不同的规则。
2.数值类型
同时支持
[整型] 和
[浮点型] 数值。无任何类型声明可用于区分;
通过是否有小数点来分辨它们。
可通过显示的将
转换为整数、浮点数。整数可以任意大,但是浮点数有精度限制。
常见的运算符就不多说了,值得一提的是中的
运算符执行的是浮点数除法;
运算符执行的是地板除,但是它不总是返回整数,当分子或分母为浮点数时,它依然会返回浮点数,比如
会返回
;
运算符是计算幂的,比如
。
在布尔类型上下文环境中,非零整数为真,非浮点数为真。不过在使用浮点数时一定要注意误差。
3.列表
的主力数据类型。像使用数组一样使用列表,不过列表可以容纳任何对象,并在加入新元素时进行动态扩展。
3.1创建列表
列表的索引从开始,负数索引相当于从列表尾部向前计数访问元素,以上面的图片为例,列表长度为
,那么
。
3.2列表切片
通过指定两个索引值,可以从列表中获取称作“切片”的某个部分,返回值是一个新列表。第一个索引值默认为,第二个索引值默认为列表的长度,左闭右开。
3.3向列表中新增项
运算符包含两个步骤 — 连接然后赋值 — 当处理大型列表时,该操作可能(暂时)消耗大量内存。
方法向列表的尾部添加一个新的元素。
列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
方法将单个元素插入到列表中。第一个参数是列表中将被顶离原位的第一个元素的位置索引。
3.4在列表中检索值
方法返回了列表中某个特定值出现的次数。
如果你想知道的是某个值是否出现在列表中,运算符将会比使用
方法要略快一些。它总是返回
或
,而不是告诉你该值出现在什么位置。
如果想知道某个值在列表中的精确位置(第一次出现的位置),可调用方法。后两个参数用来指定搜索范围欸,左闭右开默认为整个列表。
如果在列表中没有找到该值,方法将会引发一个错误。
3.5从列表中删除元素
可使用语句从列表中删除某个特定元素,后面的元素将各自向前移动一位。
方法接受一个
参数,并删除列表中的第一个
;如果找不到将会引发一个错误。你还可以发现,这个方法没有返回值。
方法接收一个
参数,它将删除列表
位置的元素并返回它的值;默认删除列表的最后一个元素。一个空列表调用这个方法或者
越界都会引发错误。
3.6布尔上下文环境中的列表
非空列表为真。
4.元组
这里打错了,应该是元组。
元组和列表的主要区别是元组不能进行修改。用技术术语来说,元组是不可变更的。从实践的角度来说,没有可用于修改元组的方法。和
这些方法元组都没有。可以对元组进行切片操作(因为该方法创建一个新的元组),可以检查元组是否包含了特定的值(因为该操作不修改元组),还可以……就那么多了。
元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。
对不需要改变的数据进行“写保护”将使得代码更加安全。
一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。
4.1布尔上下文环境中的元组
非空元组为真,注意是一个空的元组;
才是仅包含一个元素的元组,这个逗号至关重要。悄悄告诉你,其实圆括号也可以省去,
也是一个元组。
4.2同时赋多个值
5.集合
是装有独特值的无序“袋子”。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算。
5.1创建集合
要创建多值集合,请将值用逗号分开,并用花括号将所有值包裹起来。
注意集合是无序的。
创建空集合请使用;一对不包含任何值的花括号将创建一个空字典。
5.2修改集合
方法接受单个可以是任何数据类型的参数,并将该值添加到集合之中。
方法仅接受一个集合作为参数,并将其所有成员添加到初始列表中。其行为方式就像是对参数集合中的每个成员调用
方法。
实际上,可以带任何数量的参数调用方法。如果调用时传递了多个集合, 它会将每个集合中的每个成员添加到初始的集合当中(丢弃重复值)。
方法还可接受一些其它数据类型的对象作为参数,包括列表。
5.3从集合中删除元素
都接受一个单值作为参数,并从集合中删除该值。区别是当这个值不存在时,前者不抛出错误,后者会抛出错误。
方法从集合中删除某个值,并返回该值。然而,由于集合是无序的,并没有“最后一个”值的概念,因此无法控制删除的是哪一个值。它基本上是随机的。对空集合调用该方法会引发错误。
方法删除集合中所有的值,留下一个空集合。它等价于
,该语句创建一个新的空集合,并用之覆盖
变量的之前的值。
5.4常见集合操作
要检测某值是否是集合的成员,可使用运算符。
方法返回一个新集合,其中装着在两个集合中出现的元素。
方法返回一个新集合,其中装着同时在两个集合中出现的所有元素。
方法返回的新集合中,装着所有在
出现但未在
中的元素。
方法返回一个新集合,其中装着所有只在其中一个集合中出现的元素。
除了求差操作是不对称的,其它操作都是对称的。
是
的子集— 所有
的成员均为
的成员;反过来可以说
是
的超集。
5.5布尔上下文环境中的集合
非空集合为真。
6.字典
的字典为通过键获取值进行了优化,而不是反过来。
6.1创建字典
可以通过访问字典中键
对应的值,但是当
不存在时,会抛出一个错误。
6.2修改字典
在字典中不允许有重复的键。对现有的键赋值将会覆盖旧值。
可随时添加新的键值对。该语法与修改现有值相同。
6.3混合值字典
字典并非只能用于字符串。字典的值可以是任何数据类型,包括整数、布尔值、任何对象,甚至是其它的字典。而且就算在同一字典中,所有的值也无须是同一类型,您可根据需要混合匹配。字典的键要严格得多,可以是字符串、整数和其它一些类型。在同一字典中也可混合、匹配使用不同数据类型的键。
类似列表和集合,函数将返回字典中键的数量。
而且像列表和集合一样,可使用运算符以测试某个特定的键是否在字典中。
6.4布尔上下文环境中的字典
非空字典为真。
7.None
是
的一个特殊常量。它是一个空值。
与
不同,
不是
;
不是空字符串;将
与任何非
的东西进行比较将总是返回
。
是唯一的空值。它有着自己的数据类型(
)。可将
赋值给任何变量,但不能创建其它
对象。所有值为
变量是相等的。
在布尔上下文环境中,为假值,
为真值。