zip()函數(shù)接受可迭代項(xiàng)(可以為零或更多),將它們聚合到一個(gè)元組中,然后將其返回。
zip()函數(shù)的語(yǔ)法為:
zip(*iterables)
參數(shù) | 描述 |
---|---|
iterables | 可以是內(nèi)置的可迭代項(xiàng)(例如:列表,字符串,字典)或用戶定義的可迭代項(xiàng) |
推薦閱讀: Python迭代器,__ iter__和__next__
zip() 函數(shù)基于可迭代對(duì)象返回元組的迭代器。
如果我們不傳遞任何參數(shù),則zip()返回一個(gè)空的迭代器
如果傳遞了單個(gè)iterable,則zip()返回元組的迭代器,每個(gè)元組只有一個(gè)元素。
如果傳遞了多個(gè)Iterable,則zip()返回一個(gè)元組的迭代器,其中每個(gè)元組都具有來(lái)自所有Iterables的元素。
假設(shè)有兩個(gè)可迭代的變量傳遞給zip();一個(gè)包含三個(gè)元素的可迭代對(duì)象,另一個(gè)包含五個(gè)元素的可迭代對(duì)象。然后,返回的迭代器將包含三個(gè)元組。這是因?yàn)榈髟谧疃痰目傻亢谋M時(shí)停止。
number_list = [1, 2, 3] str_list = ['one', 'two', 'three'] # 沒(méi)有iterable參數(shù) result = zip() # 將迭代器轉(zhuǎn)換為列表 result_list = list(result) print(result_list) # 兩個(gè)iterable result = zip(number_list, str_list) # 將迭代器轉(zhuǎn)換為set result_set = set(result) print(result_set)
輸出結(jié)果
[] {(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) # 轉(zhuǎn)換為set集合 result_set = set(result) print(result_set) result = zip(numbersList, str_list, numbers_tuple) # 轉(zhuǎn)換為set集合 result_set = set(result) print(result_set)
輸出結(jié)果
{(2, 'TWO'), (3, 'THREE'), (1, 'ONE')} {(2, 'two', 'TWO'), (1, 'one', 'ONE')}
運(yùn)算符*可以與zip()一起使用來(lái)解壓縮列表。
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)
輸出結(jié)果
[('x', 3), ('y', 4), ('z', 5)] c = ('x', 'y', 'z') v = (3, 4, 5)