1、 enumerate
目的:遍历一个序列同时跟踪当前元素索引。
Python中内建函数enumerate,返回(i, value)元组序列,其中i是元素的索引,value是元素的值。
In [4]: some_list = ['foo', 'bar', 'baz']
In [5]: mapping = {}
In [6]: for i,v in enumerate(some_list):
...: mapping[v] = i
...:
In [7]: mapping
Out[7]: {'foo': 0, 'bar': 1, 'baz': 2}
2、sorted
sorted 函数返回一个根据任意序列中元素新建的已排序的列表。
In [8]: sorted([7, 1, 2, 6, 0, 3, 2])
Out[8]: [0, 1, 2, 2, 3, 6, 7]
In [9]: sorted('horse race')
Out[9]: [' ', 'a', 'c', 'e', 'e', 'h', 'o', 'r', 'r', 's']
3、zip
zip 将列表、元组或其它序列的元素配对,新建一个元组构成的列表。
In [10]: seq1 = ['foo', 'bar', 'baz']
In [11]: seq2 = ['one', 'two', 'three']
In [12]: zipped = zip(seq1, seq2)
In [13]: list(zipped)
Out[13]: [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]
In [14]: seq3 = [False, True]
In [15]: list(zip(seq1, seq2, seq3))
Out[15]: [('foo', 'one', False), ('bar', 'two', True)]
zip 常用场景为同时遍历多个序列,会和 enumerate 同时使用。
In [17]: 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
给定一个配对的序列,zip 函数可将其拆分。
In [18]: pitchers = [('Nolan', 'Ruan'), ('Roger', 'Clemens'),
...: ('Schilling', 'Curt')]
In [19]: first_names, last_names = zip(*pitchers)
In [20]: first_names
Out[20]: ('Nolan', 'Roger', 'Schilling')
In [21]: last_names
Out[21]: ('Ruan', 'Clemens', 'Curt')
4、reversed
reversed 函数将序列的元素倒序排列。
In [22]: list(reversed(range(10)))
Out[22]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]