数据类型及名字绑定:
-
元组 (Tuple):
- 元组是不可变的序列,一旦创建就不能修改。
- 可以使用
tuple()
函数将列表、字符串、生成器对象转换为元组。 - 元组的元素可以是任意类型,包括混合类型。
- 常见的元组操作包括索引 (
tuple[index]
)、切片 (tuple[start:stop]
)、和连接 (tuple1 + tuple2
)。 - 元组作为不可变序列,可以作为字典的键。
-
集合 (Set):
- 集合是一种无序的容器,满足以下条件:
- 集合内不允许有重复的元素。
- 集合的元素是无序的,不分前后顺序。
- 集合内的元素必须是可哈希的,例如整数、浮点数、字符串、元组、布尔值是可哈希类型,而列表、集合、字典不是。
- 创建集合:
- 使用大括号
{}
或set()
函数,如:s = {1, 2, 3}
,s = set([1, 2, 3])
。 - 注意:创建空集合必须使用
set()
函数,{}
创建的是空字典。
- 使用大括号
- 集合的基本操作包括:
- 添加元素:
s.add(element)
。 - 移除元素:
s.remove(element)
(如果元素不存在会报KeyError
),s.discard(element)
(如果元素不存在不会报错)。 - 集合的长度:
len(s)
。 - 集合的遍历:
for x in s
。 - 弹出元素:
s.pop()
(随机弹出一个元素)。 - 判断两个集合是否相同:
s1 == s2
,无需考虑元素的顺序。
- 添加元素:
- 集合运算:
- 交集:
s1 & s2
或s1.intersection(s2)
。 - 并集:
s1 | s2
或s1.union(s2)
。 - 差集:
s1 - s2
或s1.difference(s2)
。 - 对称差集:
s1 ^ s2
或s1.symmetric_difference(s2)
。 - 子集判断:
s1.issubset(s2)
。 - 超集判断:
s1.issuperset(s2)
。
- 交集:
- 集合是一种无序的容器,满足以下条件:
-
bytes:
bytes
是不可变的二进制序列。- 通常用于处理二进制数据,文件操作,网络传输等。
- 创建:
b = bytes([50, 100, 76])
或使用字面量b = b'hello'
。 - 可以像处理字符串那样使用索引、切片等。
-
序列 (Sequences):
- 列表(List)、字符串(String)、元组(Tuple)、bytes、bytearray 都被视为序列类型。
- 序列的共同特点是可以通过索引访问元素,且可以进行切片操作。
- 序列还支持成员检查 (
in
和not in
表达式)、长度查询 (len(sequence)
)、最小值 (min(sequence)
) 和最大值 (max(sequence)
) 查询等。
-
名字、对象及绑定:
- 在 Python 中,变量如
a = 1
其中1
是一个对象,它有自己的内存地址(即 id 号);而a
是一个标识符,用来引用这个对象。 - 赋值操作就是将标识符绑定到一个对象上。
- 当一个对象的引用计数降到 0 时,Python 的垃圾回收机制 (Garbage Collection) 会销毁该对象并回收内存空间。
- 在 Python 中,变量如
-
is
和==
:is
操作符比较两个对象的内存地址是否相同,即它们是否是同一个对象。==
操作符比较两个对象的值是否相等。- 比如
a = 3, b = 3.0
,a is b
是 False 因为a
和b
指向不同的对象(内存地址不同),但a == b
是 True 因为3
和3.0
的值相等。
-
其他常见的序列操作和函数:
sorted(sequence)
: 返回序列的排序列表。reversed(sequence)
: 返回序列的逆序迭代器。enumerate(sequence)
: 返回序列的枚举对象,可用于同时获取索引和值。zip(sequence1, sequence2)
: 用于并行遍历多个序列,返回一个元组对的迭代器。