zip 同時迭代多個序列

2021-09-02 01:46:29 字數 1291 閱讀 4090

1、可以使用zip()函式來同時迭代多個序列

xpts = [1, 5, 4, 2, 8, 10]

ypts = [100, 121, 78, 37, 23]

for x, y in zip(xpts, ypts):

print(x, y)

1 100

5 121

4 78

2 37

8 23

zip(a, b)的工作原理是建立出乙個迭代器,該迭代器可產生出元組(x, y),這裡的x取自序列a, 而y取自序列b。

當其中某個輸入序列中沒有元素可以繼續迭代時,整個迭代過程結束。因此整個迭代的長度和其中最短的輸入序列長度相同。

例項如下:

a = [1, 2, 3]

b = ['w', 'x', 'y', 'z']

for i in zip(a, b):

print(i)

(1, 'w')

(2, 'x')

(3, 'y')

2、也可以使用itertools.zip_longest(),可以迭代出較長的序列長度

import itertools

for i in itertools.zip_longest(a, b):

print(i)

(1, 'w')

(2, 'x')

(3, 'y')

(none, 'z')

# 通過fillvalue來填充元素

for i in itertools.zip_longest(a, b, fillvalue=0):

print(i)

(1, 'w')

(2, 'x')

(3, 'y')

(0, 'z')

zip()可以接受多餘2個序列作為輸入。在這種情況下,得到的結果中元組裡的元素數量和輸入序列的數量相同。

c = ['m', 'n']

for i in zip(a, b, c):

print(i)

(1, 'w', 'm')

(2, 'x', 'n')

注意:

zip()建立出的結果只是乙個迭代器。如果需要將配對的資料儲存為列表,那麼可以使用list()函式。

print(zip(a, b))

print(list(zip(a, b)))

[(1, 'w'), (2, 'x'), (3, 'y')]

python使用 zip 同時迭代多個序列示例

zip 可以平行地遍歷多個迭代器 python 3中zip相當於生成器,遍歷過程中產生元祖,python2會把元祖生成好,一次性返回整份列表 zip x,y,z 會生成乙個可返回元組 x,y,z 的迭代器 x 1,2,3,4,5 y a b c d e z a1 b2 c3 d4 e5 for i ...

同時迭代多個序列

你想同時迭代多個序列,每次分別從乙個序列中取乙個元素。為了同時迭代多個序列,使用zip 函式。比如 xpts 1,5,4,2,10,7 ypts 101,78,37,15,62,99 for x,y in zip xpts,ypts print x,y 1 1015784 3721510627 99...

python zip 同時迭代多個序列

zip 可以平行地遍歷多個迭代器 python 3中zip相當於生成器,遍歷過程中產生元祖,python2會把元祖生成好,一次性返回整份列表 zip x,y,z 會生成乙個可返回元組 x,y,z 的迭代器 x 1,2,3,4,5 y a b c d e z a1 b2 c3 d4 e5 for i ...