1-enumerate函数
功能:遍历序列时,追踪当前元素的索引。
返回:(i, value)
for i, value in enumerate(collection):
# 使用值做点事
用enumerate构造字典,将序列值映射到索引位置
In [83]: some_list = ['foo', 'bar', 'baz']
In [84]: mapping = {} # 创建字典
In [85]: for i, v in enumerate(some_list):
....: mapping[v] = i # 将序列值映射到索引位置
In [86]: mapping
Out[86]: {'bar': 1, 'baz': 2, 'foo': 0}
3.1.3.2 sorted
2-sorted函数
功能:排序
输入:任意序列
返回:已排序的列表
In [87]: sorted([7, 1, 2, 6, 0, 3, 2])
Out[87]: [0, 1, 2, 2, 3, 6, 7]
In [88]: sorted('horse race') # 输入字符串
Out[88]: [' ', 'a', 'c', 'e', 'e', 'h', 'o', 'r', 'r', 's']
3-zip函数
功能:将元素配对
输入:列表、元组或其他序列的元素
输出:列表
In [89]: seq1 = ['foo', 'bar', 'baz']
In [90]: seq2 = ['one', 'two', 'three']
In [91]: zipped = zip(seq1, seq2)
In [92]: list(zipped)
Out[92]: [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]
如果输入序列长度不一,以最短序列为准。
In [93]: seq3 = [False, True]
In [94]: list(zip(seq1, seq2, seq3))
Out[94]: [('foo', 'one', False), ('bar', 'two', True)]
应用一:同时遍历多个序列,与enumerate搭配
In [95]: for i, (a, b) in enumerate(zip(seq1, seq2)):
....: print('{0}: {1}, {2}'.format(i, a, b))
....:
0: foo, one
1: bar, two
2: baz, three
应用二:拆分已配对的序列,将行列表转化成列列表
In [96]: pitchers = [('Nolan', 'Ryan'), ('Roger', 'Clemens'),
....: ('Schilling', 'Curt')]
In [97]: first_names, last_names = zip(*pitchers)
In [98]: first_names
Out[98]: ('Nolan', 'Roger', 'Schilling')
In [99]: last_names
Out[99]: ('Ryan', 'Clemens', 'Curt')
4-reversed函数
功能:将序列元素倒序排列。
In [100]: list(reversed(range(10)))
Out[100]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]