Python zip()

zip() 函数接受可迭代对象(可以为零个或多个),将它们聚合到 元组 中,并返回该元组。

示例

languages = ['Java', 'Python', 'JavaScript']
versions = [14, 3, 6]

result = zip(languages, versions)
print(list(result)) # Output: [('Java', 14), ('Python', 3), ('JavaScript', 6)]

zip() 的语法

zip() 函数的语法是

zip(*iterables)

zip() 参数

参数 描述
可迭代对象 可以是内置的可迭代对象(如:列表字符串字典),也可以是用户定义的可迭代对象

推荐阅读: Python 迭代器、__iter__ 和 __next__


zip() 返回值

zip() 函数根据可迭代对象返回一个元组迭代器。

  • 如果我们不传递任何参数,zip() 返回一个空的迭代器。
  • 如果只传递一个可迭代对象,zip() 返回一个元组迭代器,每个元组只包含一个元素。
  • 如果传递多个可迭代对象,zip() 返回一个元组迭代器,每个元组包含来自所有可迭代对象的元素。

    假设向 zip() 传递了两个可迭代对象;一个包含三个元素,另一个包含五个元素。那么,返回的迭代器将包含三个元组。这是因为当最短的可迭代对象用尽时,迭代器就会停止。

示例 1:Python zip()

number_list = [1, 2, 3]
str_list = ['one', 'two', 'three']

# No iterables are passed
result = zip()
# Converting iterator to list result_list = list(result) print(result_list) # Two iterables are passed
result = zip(number_list, str_list)
# Converting iterator to set 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')

# Notice, the size of numbersList and numbers_tuple is different
result = zip(numbersList, numbers_tuple)
# Converting to set result_set = set(result) print(result_set)
result = zip(numbersList, str_list, numbers_tuple)
# Converting to set 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)

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战