zip在python中的用法小结

来自:网络
时间:2024-03-18
阅读:

在Python中,zip()是一个内置函数,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip在python中的用法小结

一、基本用法

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)  # 返回一个zip对象  
print(list(zipped))  # 将zip对象转化为列表:[(1, 'a'), (2, 'b'), (3, 'c')]

二、处理长度不一的列表

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [10, 20]
zipped = zip(list1, list2, list3)  # 返回一个zip对象  
print(list(zipped))  # 将zip对象转化为列表:[(1, 'a', 10), (2, 'b', 20)]

注意,zip()函数的结果长度取决于最短的输入列表。

三、与 * 一起使用进行解压

zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
list1, list2 = zip(*zipped)
print(list1)  # (1, 2, 3)  
print(list2)  # ('a', 'b', 'c')

四、在循环中使用zip()

你可以在for循环中使用zip()函数来并行迭代多个可迭代的对象。如下例:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for i, letter in zip(list1, list2):
    print("Number {} corresponds to the letter {}".format(i, letter))

这段代码会输出:

Number 1 corresponds to the letter a  Number 2 corresponds to the letter b  Number 3 corresponds to the letter c

zip在python中的用法小结

五、与 itertools.zip_longest 的区别

Python的 itertools 模块提供了一个 zip_longest 函数,该函数可以处理长度不一的迭代器。它与 zip 函数的主要区别在于,当输入迭代器的长度不一致时,zip_longest 会用一个指定的值(默认为None)来填充较短的迭代器。如下例:

import itertools
list1 = [1, 2, 3]
list2 = ['a', 'b']
for i in itertools.zip_longest(list1, list2):
    print(i)

这段代码会输出:(1, 'a')(2, 'b')(3, None)

六、注意事项

  • zip对象只能迭代一次。也就是说,如果你尝试再次迭代一个已经迭代过的zip对象,将会得到一个空列表。
  • zip对象不支持索引操作。也就是说,你不能直接通过索引来访问zip对象中的元素。
  • zip对象不支持切片操作。也就是说,你不能对zip对象进行切片操作来获取其中的一部分元素。

zip在python中的用法小结

七、总结

总的来说,Python中的zip函数是一个非常有用的工具,可以帮助我们同时处理多个可迭代对象。通过使用zip函数,我们可以将多个列表或迭代器中的元素打包成一个个元组,然后返回由这些元组组成的列表。这使得我们可以更方便地处理多个数据集,并可以在循环中并行迭代它们。

返回顶部
顶部