在Python中,zip()是一个内置函数,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用
*
号操作符,可以将元组解压为列表。
list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] zipped = zip(list1, list2) # 返回一个zip对象 print(list(zipped)) # 将zip对象转化为列表:[(null, 'a'), (null, 'b'), (null, 'c')]
list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] list3 = [10, 20] zipped = zip(list1, list2, list3) # 返回一个zip对象 print(list(zipped)) # 将zip对象转化为列表:[(null, 'a', 10), (null, 'b', 20)]
注意,zip()函数的结果长度取决于最短的输入列表。
zipped = [(null, 'a'), (null, 'b'), (null, 'c')] list1, list2 = zip(*zipped) print(list1) # (null, 2, 3) print(list2) # ('a', 'b', 'c')
你可以在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
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)
这段代码会输出:(null, 'a')
, (null, 'b')
, (null, None)
。
总的来说,Python中的zip函数是一个非常有用的工具,可以帮助我们同时处理多个可迭代对象。通过使用zip函数,我们可以将多个列表或迭代器中的元素打包成一个个元组,然后返回由这些元组组成的列表。这使得我们可以更方便地处理多个数据集,并可以在循环中并行迭代它们。
到此这篇关于zip在python中的用法详解的文章就介绍到这了,更多相关python中zip用法内容请搜索插件窝以前的文章或继续浏览下面的相关文章希望大家以后多多支持插件窝!