zip 和 enumerate 函数

427 词

语法

zip(*iterables)
enumerate(iterable, start=0)

参数说明如下:
  • iterables:一个或多个可迭代对象,如列表、元组、字符串等。
  • iterable:一个可迭代对象,如列表、元组、字符串等。
  • start(可选):下标起始位置的值,默认为 0。
返回值
  1. zip:返回一个迭代器,每个元素都是一个元组,由输入的可迭代对象在相同位置上的元素组成。

    使用时需要注意:zip 函数会以最短的可迭代对象的长度为准进行合并,以最短合并 多的不要。

  2. enumerate:返回一个迭代器,每个元素都是一个包含索引和对应元素的元组。

使用

比如:我们有这些变量

1
2
3
4
string = "ABCDEF"  # 字符串
arr = [1, 2, 3, 4, 5] # 数组
fruits = ("apple", "banana", "cherry") # 元组
person = {"name": "Alice", "age": 25, "city": "New York"} # 字典
zip
1
2
3
4
5
6
7
for i in zip(string, arr, fruits, person.values()): # 使用values()获取字典的值
print(i)

# 输出结果:
('A', 1, 'apple', 'Alice')
('B', 2, 'banana', 25)
('C', 3, 'cherry', 'New York')

可以看到zipstring拆分开了,并以fruitsperson为最短的结尾,多了的就舍弃了。

enumerate
1
2
3
4
5
6
7
for i in enumerate(fruits, 0): # 以 0 开始下标
print(i)

# 输出结果:
(0, 'apple')
(1, 'banana')
(2, 'cherry')
1
2
3
4
5
6
7
for i in enumerate(fruits, 1): # 以 1 开始下标
print(i)

# 输出结果:
(1, 'apple')
(2, 'banana')
(3, 'cherry')
结合使用 zipenumerates
1
2
3
4
5
6
7
for index, values in enumerate(zip(string, arr, fruits, person.values()), 1):
print(index, values)

# 输出结果:
1 ('A', 1, 'apple', 'Alice')
2 ('B', 2, 'banana', 25)
3 ('C', 3, 'cherry', 'New York')

总结

zip函数适用于同时遍历多个序列,将它们配对成为元组,方便处理。
enumerate函数则适用于遍历序列并获得每个元素的索引值。

留言