序列5:序列方法实操下

本文详细介绍了Python中序列方法的使用,包括zip()函数的不同用法,如何利用zip(*[iter(s)]*n)切割序列,map()函数对可迭代对象进行运算,filter()函数筛选元素,以及iter()和next()函数在迭代中的作用。通过实例展示了这些方法的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

12. zip()

12.1 zip(*[iter(s)]*n) 

12.2 zip() 函数与 * 运算符

13. map()

14. filter()

14. iter()

15. next()


12. zip()

zip()函数用于创建一个聚合多个可迭代对象的迭代器; 

做法是将作为参数传入的每个可迭代对象的每个元素依次组合成元组,即第 i 个元组包含来自每个参数的第 i 个元素;

可通过list()、tuple()将enumerate()返回的迭代器转换为列表、元组;

支持列表、元组、字符串、range()等可迭代对象混合进行聚合,支持1个或多个可迭代对象聚合;

当多个可迭代对象元素数不一致时,以元素数最少的可迭代对象为准,取相应轮次元素组成迭代器;

可以使用itertools函数模块的itertools.zip_longest()函数,按元素数最多的可迭代对象组成迭代器,空出元素填充None。

#zip()函数用于创建一个聚合多个可迭代对象的迭代器;
zip([1,2,3],[4,5,6])
<zip object at 0x000002690CC9BB00>
list(zip([1,2,3],[4,5,6]))
[(1, 4), (2, 5), (3, 6)]

#支持列表、元组、字符串、range()等可迭代对象混合进行聚合,支持1个或多个可迭代对象聚合
list(zip([1,2,3]))
[(1,), (2,), (3,)]
tuple(zip([1,2,3],(4,5,6),'789',range(3)))
((1, 4, '7', 0), (2, 5, '8', 1), (3, 6, '9', 2))

#当多个可迭代对象元素数不一致时,以元素数最少的可迭代对象为准,取相应轮次元素组成迭代器
list(zip([1,2],(3,4,5),'6789'))
[(1, 3, '6'), (2, 4, '7')]

#可以使用itertools函数模块的itertools.zip_longest()函数,按元素数最多的可迭代对象组成迭代器,空出元素填充None
import itertools
list(itertools.zip_longest([1,2],(3,4,5),'6789'))
[(1, 3, '6'), (2, 4, '7'), (None, 5, '8'), (None, None, '9')]

12.1 zip(*[iter(s)]*n) 

zip() 函数将确保可迭代对象按从左至右的顺序组合,通过 zip(*[iter(s)]*n) 的惯用形式,将同一个迭代器重复迭代 N 遍,实现将对象划分为 N 个长度块的效果;

当可迭代对象s长度不是N的整数倍时,多出部分丢弃。

举例如下:

问题:请使用一句代码,将 [1, 2, 3, 4, 5, 6, 7, 8, 9] 变成 [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

>>> list(zip(*[iter([1, 2, 3, 4, 5, 6, 7, 8, 9])] * 3))
[(1, 2, 3), (4, 5, 6), (7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值