python itertools groupby用法_Python itertools的使用

简介

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

无限迭代器

count

count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出。

import itertools

natuals = itertools.count(1)

for n in natuals:

print n

...

1

2

3

...

cycle

cycle()会把传入的一个序列无限重复下去

import itertools

cs = itertools.cycle('ABC') # 注意字符串也是序列的一种

for c in cs:

... print c

...

'A'

'B'

'C'

'A'

'B'

'C'

...

repeat

repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数

ns = itertools.repeat('A', 10)

for n in ns:

... print n

...

打印10次'A'

takewhile

chain()可以把一组迭代对象串联起来,形成一个更大的迭代器

natuals = itertools.count(1)

ns = itertools.takewhile(lambda x: x <= 10, natuals)

for n in ns:

... print n

...

打印出1到10

chain方法

chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:

这个方法自己平时用的比较多,下面讲一下关于chain的实例

实例 1

for c in itertools.chain('ABC', 'XYZ'):

print c

# 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z

实例 2

import itertools

first=[['1','2','3','4','4'],['2','4','2']]

print(*first)

x=['abc','def']

print(*x)

for i in itertools.chain(*first):

print(i)

输出为

['1', '2', '3', '4', '4'] ['2', '4', '2'] =>这里是两个元素

abc def =>这里是两个元素

1

2

3

4

4

2

4

2

用*放在一个可迭代对象前面可以将对象拆分成多个单元素,比如first=[['1','2','3','4','4'],['2','4','2']],如果把*放在first前面,就会拆成['1','2','3','4','4']和['2','4','2']这两个元素,然后在使用chain方法进行迭代

实例3

from itertools import chain

s1=['i','l','o','v','e']

s2=['y','o','u']

s=[s1,s2]

all_letters=chain(*s)

print(all_letters,type(all_letters))

print(list(all_letters))

输出为

['i', 'l', 'o', 'v', 'e', 'y', 'o', 'u']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值