编程技术分享平台

网站首页 > 技术教程 正文

python itertools模块使用方法(python toolkit)

xnh888 2024-10-23 16:20:10 技术教程 15 ℃ 0 评论

python itertools是python标准库中的一个模块,提供了一些用于迭代的高效工具,也可以用于排列,组合。


  • 生成无限长度计数器

itertools.count(start=0, step=1):从start开始生成无限长度计数器,步长为step

>>> for i in itertools.count(1,2):
...     if i > 10:
...         break
...     print(i)
... 
1
3
5
7
9
  • 无限迭代元素

itertools.cycle(iterable):生成一个可迭代对象,无限迭代元素

>>> lista = itertools.cycle(['a', 'b', 'c'])
>>> for i in range(5):
...     print(next(lista))
... 
a
b
c
a
b
  • 重复迭代元素

itertools.repeat(element, times=None):重复迭代elements times次,如果times是None,则无限迭代element

>>> for i in itertools.repeat('apple', 3):
...     print(i)
... 
apple
apple
apple
  • 叠加多个迭代器

itertools.chain(iterable1, iterable2, ...):将多个迭代器叠加在一起

>>> list1 = [1, 2, 3]
>>> list2 = ['a', 'b', 'c']
>>> list3 = [True, False]
>>> list(itertools.chain(list1, list2, list3))
[1, 2, 3, 'a', 'b', 'c', True, False]
  • 生成指定长度的排列

itertools.permutations(iterable, r=None):生成指定长度的所有排列

>>> list1 = ['a', 'b', 'c']
>>> list(itertools.permutations(list1, 2))
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
  • 生成指定长度的组合

itertools.combinations(iterable, r=None):生成指定长度的所有组合

>>> list1 = ['a', 'b', 'c']
>>> list(itertools.combinations(list1, 2))
[('a', 'b'), ('a', 'c'), ('b', 'c')]
  • 过滤迭代对象

itertools.compress(data, selectors):只有在selectors中对应值为True时,data中的元素才会被保留

data:要过滤的可迭代对象

selectors:一个布尔值的可迭代对象,用于选择是否保留对应位置上的元素

注意:如果selectores较短,那么超出其长度的data元素将会被忽略,如果data较短,那么多余的selectors将会被忽略

>>> data = [1, 2, 3, 4, 5]
>>> selectors = [True, False, True, True, False]
>>> list(itertools.compress(data, selectors))
[1, 3, 4]

# selectores 较短
>>> data = [1, 2, 3, 4, 5]
>>> selectors = [True, False, True]
>>> list(itertools.compress(data, selectors))
[1, 3]

# data 较短
>>> data = [1, 2, 3]
>>> selectors = [True, False, True, True, False]
>>> list(itertools.compress(data, selectors))
[1, 3]

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表