python 使用zip合併相鄰的列表項

2021-07-11 23:34:11 字數 1713 閱讀 4696

1》使用zip()函式和iter()函式,來合併相鄰的列表項

>>> x

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> zip(*[iter(x)]*2)

[(1, 2), (3, 4), (5, 6), (7, 8)]

>>> zip(*[iter(x)]*3)

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

>>> zip(*[iter(x)]*4)

[(1, 2, 3, 4), (5, 6, 7, 8)]

之所以會出現上述結果,是因為:

>>> [iter(x)]*3

[0x02f4d790>, 0x02f4d790>, 0x02f4d790>]

可以看到,列表中的3個迭代器實際上是同乙個迭代器!!!

2》   在1》的基礎上,封裝成乙個函式,如下:

>>> x

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> group_adjacent = lambda a, k: zip(*([iter(a)] * k))

>>> group_adjacent(x,3)

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

>>> group_adjacent(x,2)

[(1, 2), (3, 4), (5, 6), (7, 8)]

>>> group_adjacent(x,1)

[(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,)]

3》使用zip()函式和切片操作,來合併相鄰的表項

>>> x

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> zip(x[::2],x[1::2])

[(1, 2), (3, 4), (5, 6), (7, 8)]

>>> zip(x[0::2],x[1::2])

[(1, 2), (3, 4), (5, 6), (7, 8)]

>>> zip(x[0::3],x[1::3],x[2::3])

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

>>> zip(x[::3],x[1::3],x[2::3])

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

4》  在3》的基礎上,封裝成函式,如下:

>>> x

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> group_adjacent = lambda a, k: zip(*[a[i::k] for i in range(k)])

>>> group_adjacent(x,3)

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

>>> group_adjacent(x,2)

[(1, 2), (3, 4), (5, 6), (7, 8)]

>>> group_adjacent(x,1)

[(1,), (2,), (3,), (4,), (5,), (6,), (7,), (8,), (9,)]

zip()函式,參考:python zip( )函式

iter()函式,參考:python iter( )函式

lambda函式,參考:python lambda函式基礎

切片操作,參考:python切片操作

(完)

Python中zip 與zip 的使用與區別

最經看 利用python進行資料分析 的前幾章,遇到zip 函式與zip 函式經常是暈頭轉向,這裡參考了一些資料,結合自己的理解說兩句,歡迎交流指正 首先來看zip 該函式將列表 元組或其他序列的元素配對,新建乙個元組構成的列表。這句話好理解,即將兩個不同序列的元素以元組形式一一配對,舉個例子 a ...

python中的zip函式使用

1.函式的介紹 python zip函式使用 zip函式的用法 接受任意多個 包括0個和1個 序列作為引數,返回乙個tuple列表。接受一系列可迭代物件作為引數,將物件中對應的元素打包成乙個個tuple 元組 然後返回由這些tuples組成的list 列表 若傳入引數的長度不等,則返回list的長度...

python 中 zip 的使用及 的使用

zip 將相同維度的值合併在一起。a 10,20 b 3,4 list zip a,b output 10,3 20,4 順帶說一下python函式中帶乙個星號引數的使用 args 讓函式接受不定長引數。dic dic.items output dict items a 0 b 1 c 2 list...