zip()函数接受可迭代项(可以为零或更多),将它们聚合到一个元组中,然后将其返回。
zip()函数的语法为:
zip(*iterables)
参数 | 描述 |
---|---|
iterables | 可以是内置的可迭代项(例如:列表,字符串,字典)或用户定义的可迭代项 |
推荐阅读: Python迭代器,__ iter__和__next__
zip() 函数基于可迭代对象返回元组的迭代器。
如果我们不传递任何参数,则zip()返回一个空的迭代器
如果传递了单个iterable,则zip()返回元组的迭代器,每个元组只有一个元素。
如果传递了多个Iterable,则zip()返回一个元组的迭代器,其中每个元组都具有来自所有Iterables的元素。
假设有两个可迭代的变量传递给zip();一个包含三个元素的可迭代对象,另一个包含五个元素的可迭代对象。然后,返回的迭代器将包含三个元组。这是因为迭代器在最短的可迭代量耗尽时停止。
number_list = [1, 2, 3] str_list = ['one', 'two', 'three'] # 没有iterable参数 result = zip() # 将迭代器转换为列表 result_list = list(result) print(result_list) # 两个iterable result = zip(number_list, str_list) # 将迭代器转换为set result_set = set(result) print(result_set)
输出结果
[] {(2, 'two'), (3, 'three'), (1, 'one')}
numbersList = [1, 2, 3] str_list = ['one', 'two'] numbers_tuple = ('ONE', 'TWO', 'THREE', 'FOUR') #注意,numbersList和numbers_tuple的大小不同 result = zip(numbersList, numbers_tuple) # 转换为set集合 result_set = set(result) print(result_set) result = zip(numbersList, str_list, numbers_tuple) # 转换为set集合 result_set = set(result) print(result_set)
输出结果
{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')} {(2, 'two', 'TWO'), (1, 'one', 'ONE')}
运算符*可以与zip()一起使用来解压缩列表。
zip(*zippedList)
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)