1 元组
- 元组是不可变序列,通常用于储存异构数据的多项集。 元组也被用于需要同构数据的不可变序列的情况(例如允许存储到 set 或 dict 的实例)。
- class tuple([iterable])
可以用多种方式构建元组:- 使用一对圆括号来表示空元组: ()
- 使用一个后缀的逗号来表示单元组: a, 或 (a,)
- 使用以逗号分隔的多个项: a, b, c or (a, b, c)
- 使用内置的 tuple(): tuple() 或 tuple(iterable)
- 语句 t = 12345, 54321, ‘hello!’ 是 元组打包 的一个例子:值 12345, 54321 和 ‘hello!’ 被打包进元组。其逆操作也是允许的
x, y, z = t
这被称为 序列解包 也是很恰当的,因为解包操作的等号右侧可以是任何序列。序列解包要求等号左侧的变量数与右侧序列里所含的元素数相同。注意多重赋值其实也只是元组打包和序列解包的组合
2 字典
2.1 字典的介绍
- Python 內置数据类型是 字典 (参见 映射类型 — dict)。字典在其他语言里可能会被叫做 联合内存 或 联合数组。与以连续整数为索引的序列不同,字典是以 关键字 为索引的,关键字可以是任意不可变类型,通常是字符串或数字。如果一个元组只包含字符串、数字或元组,那么这个元组也可以用作关键字。但如果元组直接或间接地包含了可变对象,那么它就不能用作关键字。列表不能用作关键字,因为列表可以通过索引、切片或 append() 和 extend() 之类的方法来改变。
- 将它看做是一个 键: 值 对的集合,键必须是唯一的(在一个字典中)。一对花括号可以创建一个空字典:{} 。另一种初始化字典的方式是在一对花括号里放置一些以逗号分隔的键值对,而这也是字典输出的方式。
- 如果没有给出位置参数,将创建一个空字典。 如果给出一个位置参数并且其属于映射对象,将创建一个具有与映射对象相同键值对的字典。 否则的话,位置参数必须为一个 iterable 对象。 该可迭代对象中的每一项本身必须为一个刚好包含两个元素的可迭代对象。 每一项中的第一个对象将成为新字典的一个键,第二个对象将成为其对应的值。 如果一个键出现一次以上,该键的最后一个值将成为其在新字典中对应的值。
2.2 字典的使用
- class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
返回一个新的字典,基于可选的位置参数和可能为空的关键字参数集来初始化 - get(key[, default])
如果 key 存在于字典中则返回 key 的值,否则返回 default。 如果 default 未给出则默认为 None,因而此方法绝不会引发 KeyError。 - popitem()
从字典中移除并返回一个 (键, 值) 对。 键值对会按 LIFO 的顺序被返回。
popitem() 适用于对字典进行消耗性的迭代,这在集合算法中经常被使用。 如果字典为空,调用 popitem() 将引发 KeyError。 - pop(key[, default])
如果 key 存在于字典中则将其移除并返回其值,否则返回 default。 如果 default 未给出且 key 不存在于字典中,则会引发 KeyError - del d[key]
将 d[key] 从 d 中移除。 如果映射中不存在 key 则会引发 KeyError。 - update([other])
使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。
update() 接受另一个字典对象,或者一个包含键/值对(以长度为二的元组或其他可迭代对象表示)的可迭代对象。 如果给出了关键字参数,则会以其所指定的键/值对更新字典: d.update(red=1, blue=2)。 - copy()
返回原字典的浅拷贝。只复制字典本身,字典中的字典不受限制。
2.4 遍历字典
- keys() 返回由字典键组成的一个新视图。
- values() 返回由字典值组成的一个新视图。
- items() 返回由字典项 ((键, 值) 对) 组成的一个新视图。
4 集合
4.1 集合的简介
- 集合是由不重复元素组成的无序的集。
- 花括号{}或 set() 函数可以用来创建集合。注意:要创建一个空集合你只能用 set() 而不能用 {},因为后者是创建一个空字典。
- 它的基本用法包括成员检测和消除重复元素。
- set 类型是可变的 — 其内容可以使用 add() 和 remove() 这样的方法来改变。 由于是可变类型,它没有哈希值,且不能被用作字典的键或其他集合的元素。
- len(s) 返回集合 s 中的元素数量(即 s 的基数)
- *update(others) set |= other | …
更新集合,添加来自 others 中的所有元素。 - add(elem) 将元素 elem 添加到集合中。
- remove(elem) 从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发 KeyError。
- discard(elem) 如果元素 elem 存在于集合中则将其移除。
- pop() 从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyError。
- clear() 从集合中移除所有元素。
4.2 集合的运算
- & 交集运算
- | 并集运算
- - 差集运算
- ^ 亦或集
- <= 检查⼀个集合是否是另⼀个集合的⼦集
- < 检查⼀个集合是否是另⼀个集合的真⼦集
- >=检查⼀个集合是否是另⼀个集合的超集
- >检查⼀个集合是否是另⼀个集合的真超集