zip()和enumerate()有什么区别
时间: 2023-12-21 07:06:45 浏览: 169
`zip()` 和 `enumerate()` 都是 Python 内置函数,它们的作用略有不同:
- `zip()` 函数可以将多个可迭代对象中对应的元素打包成一个元组,返回一个可迭代的 zip 对象。例如,可以将两个列表中对应位置的元素依次打包成一个元组,形成一个新的列表。
- `enumerate()` 函数可以将一个可迭代对象转换为一个枚举对象,返回一个由元素下标和元素值组成的元组序列。常用于 for 循环中获取迭代次数和对应元素值的场景。
具体来说,`zip()` 函数和 `enumerate()` 函数的区别如下:
- `zip()` 函数将多个可迭代对象中对应位置的元素打包成一个元组,返回一个可迭代对象。而 `enumerate()` 函数将一个可迭代对象转换为一个枚举对象,返回一个由元素下标和元素值组成的元组序列。
- `zip()` 函数接受任意多个可迭代对象作为参数,将它们打包成一个元组序列,需要保证每个可迭代对象的长度相同。而 `enumerate()` 函数只接受一个可迭代对象作为参数,返回一个枚举对象。
- `zip()` 函数返回的是一个可迭代对象,需要通过循环或者转换成列表等形式进行访问。而 `enumerate()` 函数返回的是一个枚举对象,可以通过循环遍历或者转换成列表等形式进行访问。
举个例子,假设有两个列表 fruits 和 prices,分别存储了水果名称和价格,我们可以使用 `zip()` 函数将它们打包成一个元组序列:
```python
fruits = ['apple', 'banana', 'orange']
prices = [10, 20, 30]
for fruit, price in zip(fruits, prices):
print(fruit, price)
```
输出结果为:
```
apple 10
banana 20
orange 30
```
而如果使用 `enumerate()` 函数,可以获取到每个元素的下标和值:
```python
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
print(index, fruit)
```
输出结果为:
```
0 apple
1 banana
2 orange
```
可以看到,`zip()` 函数将两个列表中对应位置的元素打包成一个元组序列,而 `enumerate()` 函数将 fruits 列表转换为一个枚举对象,每个元素都是一个包含下标和元素值的元组。
阅读全文