Sequence 序列对象
lists 列表, 元组 tuples, and range
通用序列操作:
item in 或 not in sequence: 判断 item 在或者不在序列中
+ 或符号: 将两个序列相加或把一个序列内容复制 n 倍, 注意可能得到的是同一对象的多个引用
s[n]: 第 n 个元素, 超出范围 IndexError
s[i:j]: 第 i 到 j 个元素的切片, 包含第 i 个不包含第 j 个, i 为负数相当于 0,j 超范围相当于最多
s[i:j:k]: 第 i 到 j 个元素间隔 k 个取出
len(s): 序列的元素总数
min(s)和 max(s): 按照排序的最小或最大一项
s.index(x,i,j):ij 可选. 序列中 x 的位置, i 和 j 限定搜索范围, 返回 x 的位置或 ValueError
s.count(x):s 中包含 x 的重复数量, 找不到返回 0
for x in s: 循环处理序列中的每一项
s[i:j] = t: 将序列的 i 到 j 项替换为 t, 如果 t 为序列则直接元素对应替换, 无论 t 数量多少; 如果 t 为非序列, 则 i 到 j 变为一个 t 对象
s[i:j]=[]: 相当于删除 i 到 j 项(不含 j), 等同 del s[i:j]
s.append(x): 将 x 添加到 s, 等同 s[len(s):len(s)]=[x]
s.clear(): 清理所有元素
s.copy(): 复制整个序列, 相当于 s[:]
s.extend(t) or s += t: 合并两个序列, 相当于 s[len(s):len(s)] = t
s.insert(i, x): 将 x 插入到 i 位置, 相当于 s[i:i] = [x]
s.pop(i): 获取第 i 项并从序列中删除它, 如果 i 省略则指向最后一个
s.remove(x): 移除 x 项, 如果不存在则 ValueError
s.reverse(): 翻转顺序
list 列表
构造方法:[],[1,2,3],[for i in range(10)],list('abc'),list((1,2,3))
- >>> sorted((3,2,1))
- [1, 2, 3]
- >>> list((1,2,3))
- [1, 2, 3]
负数索引从 list 的尾部开始向前计数来存取元素. 任何一个非空的 list 最后一个元素总是 li[-1]
sorted(list, key=None, reverse=False)为列表排序, 生成新排序列表
- >>> li=[{
- 'a':22
- },{
- 'a':12
- },{
- 'a':100
- }]
- >>> sorted(li,key=lambda x:x['a'])
- [{
- 'a': 12
- }, {
- 'a': 22
- }, {
- 'a': 100
- }]
list.sort()将 list 排序, list 必须为基本对象, 不能是容器对象; 而 sorted 则可以利用 key 对更复杂对象排序.
Tuples 元组
构造方法:(a,b),(a,),(a,b,c),tuple([1,2,3])
元组一旦创建将不可修改
Tuple 没有没有 append 或 extend 方法, 没有 remove 或 pop 方法, 没有 index 方法.
可以使用 in 来查看一个元素是否存在于 tuple 中.
range
构造方法: range(start,stop,step),range(10),range(5,50,5);step 不能为 0
- >>> list(range(0, -10, -1))
- [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
- >>> list(range(0))
- []
- >>> list(range(1, 0))
- []
range 无论数字多少, 总是占用同样小的内存.
range 可以比较
- >>> range(0, 3, 2) == range(0, 4, 2)
- True
range 存在. start,.stop,.step 属性
集合类型 set
集合支持 x in set, len(set), and for x in set 等语法
集合中没有重复元素
isdisjoint 是否完全无交集
- >>> a={
- 1,2,3,4
- }
- >>> b={
- 3,4,5,6
- }
- >>> a.isdisjoint(b)
- False
- >>> c={
- 5,6
- }
- >>> a.isdisjoint(c)
- True
issubset(other)是否子集; 相当于 set <= other
issuperset(other)是否超集; 相当于 set>= other
union(other)与 other 合并;
intersection(*others)交集
difference(*others)在此集合但不在 other 集合
symmetric_difference(others)不在交集但在此集合或 other 集合
copy()复制集合
update(*others)将 others 添加进来
intersection_update(*others)取交集
add(elem),remove(elem)添加和移除元素, 如果不存在则抛出异常 KeyError
discard(elem)删除元素, 如果不存在不报错
pop()任意去掉一个元素
clear()清空
字典 dict
Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系.
每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来
您可以通过 key 来引用其值, 但是不能通过值获取 key
在一个 dictionary 中不能有重复的 key. 给一个存在的 key 赋值会覆盖原有的值
dictionary 的 key 是大小写敏感的
Dictionary 的值可以是任意数据类型, 包括字符串, 整数, 对象, 甚至其它的 dictionary.
在单个 dictionary 里, dictionary 的值并不需要全都是同一数据类型, 可以根据需要混用和匹配.
构建方法:{'a':11,'b':22},{11:'22',22:'bb'}, 键只能是索引数字 (正负数和小数都可) 或字符串
- >>> a = dict(one=1, two=2, three=3)
- >>> b = {
- 'one': 1, 'two': 2, 'three': 3
- }
- >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
- >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
- >>> e = dict({
- 'three': 3, 'one': 1, 'two': 2
- })
- >>> a == b == c == d == e
- True
len(d)字典属性数量
del d[key]删除 key, 如果不存在则 KeyError
clear(),copy()
fromkeys(seq[, value])用 seq 序列做键值 key, 所有键都等于 value
get(key)获取值, 但不出错
items(),keys(),values()返回一个可枚举的对象
- >>> dishes = {
- 'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500
- }
- >>> keys = dishes.keys()
- >>> values = dishes.values()
- >>> # iteration
- >>> n = 0
- >>> for val in values:
- ... n += val
- >>> print(n)
- 504
- >>> # keys and values are iterated over in the same order (insertion order)
- >>> list(keys)
- ['eggs', 'sausage', 'bacon', 'spam']
- >>> list(values)
- [2, 1, 1, 500]
- >>> # view objects are dynamic and reflect dict changes
- >>> del dishes['eggs']
- >>> del dishes['sausage']
- >>> list(keys)
- ['bacon', 'spam']
- >>> # set operations
- >>> keys & {
- 'eggs', 'bacon', 'salad'
- }
- {
- 'bacon'
- }
- >>> keys ^ {
- 'sausage', 'juice'
- }
- {
- 'juice', 'sausage', 'bacon', 'spam'
- }
pop(key)删除一个属性, 不存在的话报错; popitem()删除最后一个属性
setdefault(key[, default])设置默认值, 不存在的话自动添加
update(other)更新属性值, 不存在的话自动添加
来源: http://www.jianshu.com/p/4eeaced7971d