itertools模块

itertools模块

  • count函数
  • circle函数
  • repeat函数
  • chain函数
  • list函数
  • dropwhile函数
  • groupby函数
  • islice函数
  • product函数

itertools.count(start=0, step=1)

计数器count
alist = ["a", "b", "c", "d", "e"]
for i in zip(count(1), alist):
    print(i)

(1, ‘a’)
(2, ‘b’)
(3, ‘c’)
(4, ‘d’)
(5, ‘e’)

itertools.cycle(iterable)

循环输出,直到你给定的停止条件

alist = ["a", "b", "c", "d", "e"]
a = 0
for item in cycle(alist):
        a = a+1
        if a == 12:
            break
        print(a, item)

2 b
3 c
4 d
5 e
6 a
7 b
8 c
9 d
10 e
11 a

itertools.repeat(object[, times])

重复生成object,可以指定次数

for i in repeat("object", 5):
    print(i)

object
object
object
object
object

itertools.chain(*iterables)

将两个列表生成单一的chain

for i in chain([1, 2, 3, 4, 5], [{"a": 2}, {"f": 4}]):
    print(i)

1
2
3
4
5
{‘a’: 2}
{‘f’: 4}

itertools.compress(data, selectors)

过滤list

alist = ["a", "b", "c", "d", "e"]
for i in compress(alist,[1,0,0,1,1]):
    print(i)

a
d
e
9

itertools.dropwhile(predicate, iterable)

dropwhile,从头开始过滤,一旦第一个成功,输出后面所有。即在条件为false之后的第一次, 返回迭代器中剩下来的项.

for i in dropwhile(lambda x: x<5,[9,63,5,7,1,2,9]):
    print(i)

9
63
5
7
1
2
9

itertools.groupby(iterable[, key])

groupby 分组,可以自定义函数,按照你函数输出结果进行分组

for i, k in groupby(['aa', 'bb', 'zxc', 'sdf', 'eeee', 'fffff'], len):
    print(i, list(k))

def out_prenum(x):
    return str(x)[0]

for i, k in groupby([22, 23, 24, 12, 14, 11, 56, 57], out_prenum):
    print(i,list(k))

2 [‘aa’, ‘bb’]
3 [‘zxc’, ‘sdf’]
4 [‘eeee’]
5 [‘fffff’]
2 [22, 23, 24]
1 [12, 14, 11]
5 [56, 57]

itertools.islice(iterable, stop)

islice 列表的起始,结尾,步长

for i in islice([22, 23, 24, 12, 14, 11, 56, 57], 2, 6, 2):
    print(i)

24
14

itertools.product(*iterables[, repeat])

product 生成序列产品

for i in product([1,2,3],[‘a’,’b’,’c’]):
print(i)

(1, ‘a’)
(1, ‘b’)
(1, ‘c’)
(2, ‘a’)
(2, ‘b’)
(2, ‘c’)
(3, ‘a’)
(3, ‘b’)
(3, ‘c’)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值