您当前的位置: 首页 >  Python

Python编程:itertools库排列组合

彭世瑜 发布时间:2018-02-23 16:07:01 ,浏览量:3

itertools库包含:

  • 无限迭代器
  • 有限序列处理
  • 排列组合
range对象

# 添加函数说明
def print_info(obj: "iter object") -> "print_info":
    print(obj)
    print(type(obj))
    print(list(obj))

# help(print_info)  
# print_info(obj:'iter object') -> 'print_info'

# range对象
r = range(10)
print_info(r)
"""
range(0, 10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"""

无限迭代器

import itertools

# 无限计数器,可以指定起始位置和步长
x = itertools.count(start=20, step=-1)
print(list(itertools.islice(x, 0, 10, 1)))
# [20, 19, 18, 17, 16, 15, 14, 13, 12, 11]

# 无限循环指定的列表和迭代器
x = itertools.cycle("ABC")
print(list(itertools.islice(x, 0, 10, 1)))
# ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C', 'A']

# 简单的生成一个拥有指定数目元素的迭代器
x = itertools.repeat(0, 5)
print(list(x))  # [0, 0, 0, 0, 0]
有限序列处理

# 累加
x = itertools.accumulate(range(10))
print(x)# 
print(list(x))  # [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

# 连接多个列表或者迭代器
x = itertools.chain(range(3), range(4), [6, 7, 8])
print(x) # 
print(list(x))# [0, 1, 2, 0, 1, 2, 3, 6, 7, 8]

# 按照真值表筛选元素
x = itertools.compress(range(5), (True, False, False, True, True))
print(list(x))  # [0, 3, 4]

# 保留对应真值为False的元素
x = itertools.filterfalse(lambda e : e             
关注
打赏
1688896170
查看更多评论
0.4116s