1.zip()
zip()
是一个 Python 内置函数,用于将多个可迭代对象(如列表、元组等)中对应位置的元素打包成元组,然后返回一个迭代器,这个迭代器生成了这些元组。
zip()
函数的语法如下:
zip(iterable1, iterable2, ...)
参数说明:
iterable1
,iterable2
, ...: 要进行打包的可迭代对象,可以是多个,但长度应该相同。
zip()
函数将返回一个迭代器,这个迭代器会生成由传入的可迭代对象中对应位置的元素组成的元组。如果传入的可迭代对象长度不一致,zip()
函数会以最短的可迭代对象长度为准。
示例:
# 使用zip()函数打包两个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
# 输出zip对象
print(zipped)
# <zip object at 0x000001F7F0C5E3C0>
# 可以通过list()将zip对象转换为列表
print(list(zipped))
# [(1, 'a'), (2, 'b'), (3, 'c')]
# 使用zip()函数和循环同时迭代两个列表
for item1, item2 in zip(list1, list2):
print(item1, item2)
# 输出:
# 1 a
# 2 b
# 3 c
2.unpack
使用*使打包的元组进行解压。
2.1print(*z1)
在Python中,*
操作符用于解压迭代对象。在 print(*z1)
中,z1
是一个迭代器(比如一个 zip 对象)。这个语法实际上等同于将迭代器中的元素解压出来,并作为参数传递给 print()
函数。具体地,print(*z1)
的作用是将 z1
中的元素解压出来,然后将这些元素作为单独的参数传递给 print()
函数。这样的效果相当于将 z1
中的元组解压成多个单独的参数,然后打印这些参数。这种语法通常用于将一个序列解压为一个函数的参数列表。
例如:
z1 = [(1, 'a'), (2, 'b'), (3, 'c')]
print(*z1)
#上述代码的输出结果将会是:
(1, 'a') (2, 'b') (3, 'c')
#它等价于:
print((1, 'a'), (2, 'b'), (3, 'c'))
2.2 result1, result2 = zip(*z1)
zip(*z1)
的作用是将 z1
中的元组解压成多个独立的序列,并将这些序列分别作为参数传递给 zip()
函数。然后 zip()
函数会将这些序列中对
result1, result2 = zip(*z1)
应位置的元素打包成元组。这个操作的结果是重新恢复了原始的 z1
。
假设 z1
是一个二维的迭代器,比如:
z1 = [(1, 'a'), (2, 'b'), (3, 'c')]
那么 zip(*z1)
就相当于将这些元组解压为两个独立的序列 (1, 2, 3)
和 ('a', 'b', 'c')
,然后将它们传递给 zip()
函数。zip()
函数会将这两个序列中对应位置的元素打包成元组。
所以,result1
和 result2
就会得到两个结果序列,分别是 (1, 2, 3)
和 ('a', 'b', 'c')
。
result1, result2 = zip(*z1)
这个语句将 zip(*z1)
的结果分别赋值给 result1
和 result2
。在本例中,result1
将会是 (1, 2, 3)
,而 result2
将会是 ('a', 'b', 'c')
。