一 列表操作
1.1 zip()、zip(*)
Python 的 zip() 函数定义为 zip(*iterables)。该函数将可迭代对象作为参数并返回一个迭代器。此迭代器生成一系列元组,其中包含来自每个可迭代对象的元素。 zip() 可以接受任何类型的可迭代对象,例如文件、列表、元组、字典、集合等。
代码示例:
>>> numbers = [1, 2, 3]
>>> letters = ['a', 'b', 'c']
>>> zipped = zip(numbers, letters)
>>> zipped # Holds an iterator object
<zip object at 0x7fa4831153c8>
>>> type(zipped)
<class 'zip'>
>>> list(zipped)
[(1, 'a'), (2, 'b'), (3, 'c')]
在这里,使用 zip(numbers, letters) 创建一个生成 (x, y) 形式的元组的迭代器。在这种情况下,x 值取自数字,y 值取自字母。请注意 Python zip() 函数如何返回迭代器。要检索最终的列表对象,需要使用 list() 来使用迭代器。
注意当使用诸如列表、元组或字符串之类的序列,则可以保证从左到右评估可迭代对象。这意味着生成的元组列表将采用以下形式 [(numbers[0], letters[0]), (numbers[1], letters[1]),…, (numbers[n], letters[n ])]。但是,对于其他类型的可迭代对象(如集合),您可能会看到一些奇怪的结果:
>>> s1 = {2, 3, 1}
>>> s2 = {'b', 'a', 'c'}
>>> list(zip(s1, s2))
[(1, 'a'), (2, 'c'), (3, 'b')]