博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 使用zip合并相邻的列表项
阅读量:4169 次
发布时间:2019-05-26

本文共 1386 字,大约阅读时间需要 4 分钟。

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

[<listiterator object at 0x02F4D790>, <listiterator object at0x02F4D790>, <listiterator object at 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()函数,参考:

iter()函数,参考:

lambda函数,参考:

切片操作,参考:

(完)

转载地址:http://cdyai.baihongyu.com/

你可能感兴趣的文章
excel 宏表函数 get.cell
查看>>
Recover Deleted Linux Files With lsof
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 01 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 02 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 03 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 04 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 05 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 06 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 07 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 08 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 09 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 10 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 11 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 12 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 13 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 14 exercise
查看>>
<<Oracle Applications DBA 基础(第二期)>>Week 15 exercise
查看>>
更改Oracle JDeveloper的显示语言为英语
查看>>
vbs之CurrentDirectory
查看>>
跳过17:30,跳过瑞星定时扫描
查看>>