zip()
函数的基本语法如下:
python
zip(iter1 [,iter2 [...]]) -> zip object
Python 内置的帮助模块提供了一个简洁但略显复杂的解释:
zip()
函数返回一个迭代器,其中每个元组包含来自每个参数序列或可迭代对象的相应元素。当最短的可迭代对象耗尽时,迭代器即终止。如果只有一个可迭代对象作为参数,那么返回的迭代器将包含单个元素的元组。若没有参数,则返回一个空迭代器。
让我们通过一些例子来更好地理解 zip()
函数的工作原理。首先,我们可以通过几个列表来演示它的功能:
```python
uppercase = ['A', 'B', 'C']
lowercase = ['a', 'b', 'c']
for x, y in zip(uppercase, lowercase):
print(x, y)
输出结果为:
A a
B b
C c
```
除了两个可迭代对象外,还可以传递任意数量的可迭代对象: ```python uppercase = ['A', 'B', 'C'] lowercase = ['a', 'b', 'c'] numbers = [1, 2, 3]
for x, y, z in zip(uppercase, lowercase, numbers):
print(x, y, z)
输出结果为:
A a 1
B b 2
C c 3
```
如果传递的可迭代对象长度不同,zip()
函数将以最短的可迭代对象为准。例如:
```python
uppercase = ['A', 'B', 'C', 'D', 'E']
lowercase = ['a', 'b', 'c', 'd']
numbers = [1, 2, 3]
for x, y, z in zip(uppercase, lowercase, numbers):
print(x, y, z)
输出结果为:
A a 1
B b 2
C c 3
``
可以看到,尽管
uppercase和
lowercase列表分别有 5 个和 4 个元素,但
zip()` 函数只输出了 3 个三元组。
zip()
返回值类型虽然 zip()
函数看起来像是返回一个列表,但实际上它返回的是一个称为 zip object
的特殊数据类型。要将 zip object
转换为其他数据类型,例如列表,可以使用 list()
函数:
```python
b = ["red", "green", "blue"]
c = ["leopard", "cheetah", "jaguar"]
newlist = list(zip(b, c))
print(newlist)
输出结果为:
[('red', 'leopard'), ('green', 'cheetah'), ('blue', 'jaguar')]
```
zip()
对象转换为字典此外,可以使用 dict()
函数将 zip()
对象转换为字典。注意,这个操作只能用两个参数,其中一个作为键,另一个作为值:
```python
b = ["red", "green", "blue"]
f = ["strawberry", "kiwi", "blueberry"]
print(dict(zip(b, f)))
输出结果为:
{'red': 'strawberry', 'green': 'kiwi', 'blue': 'blueberry'}
```
有时我们需要执行相反的操作——解压列表。解压操作涉及将压缩的元素恢复到其原始形式。可以通过添加 *
运算符到函数调用来实现:
```python
a = [1, 2, 3]
b = [4, 5, 6]
zipped = zip(a, b)
a2, b2 = zip(*zipped)
print(list(a2) == a and list(b2) == b)
输出结果为:
True
```
zip()
与列表生成式zip()
函数可以与 Python 中的列表生成式一起使用。表面上看,这个操作非常简单:
```python
m = ["mind", "mouse", "mini"]
n = ["norm", "night", "necklace"]
[print(a, b) for a, b in zip(m, n)]
输出结果为:
mind norm
mouse night
mini necklace
```
然而,需要注意的是,列表生成式中的变量在生成式之外是不可访问的。如果尝试在列表生成式之外打印这些变量,将会导致 NameError
。例如:
```python
m = ["mind", "mouse", "mini"]
n = ["norm", "night", "necklace"]
for m, n in zip(m, n): print(m, n)
print(m)
输出结果为:
mind norm
mouse night
mini necklace
mini
```
这里,m
变量被覆盖了,因此最后输出的是 mini
。
总之,zip()
函数在 Python 中确实有一些巧妙的应用。建议大家亲自实践代码示例,而不仅仅是阅读本文。通过实际操作和调整代码,你将更好地掌握这些知识。