Python zip() 函数
zip()
函数接受可迭代对象(可以是零个或多个),将它们聚合成一个元组,并返回。
示例
languages = ['Java', 'Python', 'JavaScript']
versions = [14, 3, 6]
result = zip(languages, versions)
print(list(result))
# 输出: [('Java', 14), ('Python', 3), ('JavaScript', 6)]
zip() 语法
zip()
函数的语法是:
zip(*iterables)
zip() 参数
参数 | 描述 |
---|---|
iterables | 可以是内置的可迭代对象(如:列表、字符串、字典)或用户定义的可迭代对象 |
推荐阅读: Python 迭代器、iter 和 next
zip() 返回值
zip()
函数根据可迭代对象返回一个元组的迭代器。
- 如果我们没有传递任何参数,
zip()
返回一个空迭代器 - 如果传递了单个可迭代对象,
zip()
返回一个元组的迭代器,每个元组只有一个元素。 - 如果传递了多个可迭代对象,
zip()
返回一个元组的迭代器,每个元组含有所有可迭代对象的元素。
假设,向 zip()
传递了两个可迭代对象;一个包含三个元素,另一个包含五个元素。那么,返回的迭代器将包含三个元组。这是因为迭代器在最短的可迭代对象耗尽时停止。
示例 1:Python zip()
number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']
# 没有传递可迭代对象
result = zip()
# 将迭代器转换为列表
result_list = list(result)
print(result_list)
# 传递了两个可迭代对象
result = zip(number_list, str_list)
# 将迭代器转换为集合
result_set = set(result)
print(result_set)
输出
[]
{(2, 'two'), (3, 'three'), (1, 'one')}
示例 2:可迭代元素数量不同
numbersList = [1, 2, 3]
str_list = ['one', 'two']
numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR')
# 注意,numbersList 和 numbers_tuple 的大小不同
result = zip(numbersList, numbers_tuple)
# 转换为集合
result_set = set(result)
print(result_set)
result = zip(numbersList, str_list, numbers_tuple)
# 转换为集合
result_set = set(result)
print(result_set)
输出
{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')}
{(2, 'two', 'TWO'), (1, 'one', 'ONE')}
* 操作符可以与 zip()
一起使用来解压列表。
zip(*zippedList)
示例 3:使用 zip() 解压值
coordinate = ['x', 'y', 'z']
value = [3, 4, 5]
result = zip(coordinate, value)
result_list = list(result)
print(result_list)
c, v = zip(*result_list)
print('c =', c)
print('v =', v)
输出
[('x', 3), ('y', 4), ('z', 5)]
c = ('x', 'y', 'z')
v = (3, 4, 5)