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)