Zip 和 Enumerate

  • Post author:
  • Post category:其他



zip



enumerate

是实用的内置函数,可以在处理循环时用到。

Zip


zip

返回一个将多个可迭代对象组合成一个元组序列的迭代器。每个元组都包含所有可迭代对象中该位置的元素。例如,


list(zip(['a', 'b', 'c'], [1, 2, 3]))

将输出

[('a', 1), ('b', 2), ('c', 3)]

.

正如

range()

一样,我们需要将其转换为列表或使用循环进行遍历以查看其中的元素。

你可以如下所示地用

for

循环拆封每个元组。

letters = ['a', 'b', 'c']
nums = [1, 2, 3]

for letter, num in zip(letters, nums):
    print("{}: {}".format(letter, num))

除了可以将两个列表组合到一起之外,还可以使用星号拆封列表。

some_list = [('a', 1), ('b', 2), ('c', 3)]
letters, nums = zip(*some_list)

这样可以创建正如之前看到的相同

letters



nums

列表。

Enumerate


enumerate

是一个会返回元组迭代器的内置函数,这些元组包含列表的索引和值。当你需要在循环中获取可迭代对象的每个元素及其索引时,将经常用到该函数。

letters = ['a', 'b', 'c', 'd', 'e']
for i, letter in enumerate(letters):
    print(i, letter)

这段代码将输出:

0 a
1 b
2 c
3 d
4 e