当前位置: 首页 > article >正文

Python_itertools

itertools

  1. itertools.count(start, step)
    返回一个无限迭代器,从指定的start开始,每次增加step。
import itertools
# 从1开始,每次增加1,输出前5个数
for i in itertools.count(1, 1):
    if i > 5:
        break
    print(i)

运行结果:
1
2
3
4
5

  1. itertools.cycle(iterable)
    循环遍历一个可迭代对象。
import itertools
# 循环打印序列中的元素,直到打印5次
for c in itertools.cycle('ABCD'):
    if c == 'D':  # 当打印到D时,实际上是第二个D,循环了一次
        break
    print(c)

运行结果:
A
B
C
D
A

  1. itertools.repeat(object, times=None)
    无限重复一个对象,除非指定了次数。
import itertools
# 重复打印"Hello" 5次
for _ in itertools.repeat(None, 5):
    print("Hello")

运行结果:
Hello
Hello
Hello
Hello
Hello

  1. *itertools.chain(iterables)
    将多个迭代器串联起来。
import itertools
# 串联两个序列
for c in itertools.chain('ABC', 'DEF'):
    print(c)

运行结果:
A
B
C
D
E
F

  1. *itertools.product(iterables, repeat=1)
    计算输入的多个可迭代对象的笛卡尔积。
import itertools
# 计算两个序列的笛卡尔积
for p in itertools.product('AB', repeat=2):
    print(p)

运行结果:
(‘A’, ‘A’)
(‘A’, ‘B’)
(‘B’, ‘A’)
(‘B’, ‘B’)

  1. itertools.permutations(iterable, r=None)
    返回所有可能的排列。
import itertools
# 返回序列的所有可能的2个元素的排列
for p in itertools.permutations('ABCD', 2):
    print(p)

运行结果:
(‘A’, ‘B’)
(‘A’, ‘C’)
(‘A’, ‘D’)
(‘B’, ‘A’)
(‘B’, ‘C’)
(‘B’, ‘D’)
(‘C’, ‘A’)
(‘C’, ‘B’)
(‘C’, ‘D’)
(‘D’, ‘A’)
(‘D’, ‘B’)
(‘D’, ‘C’)

  1. itertools.combinations(iterable, r)
    返回所有可能的组合。
import itertools
# 返回序列的所有可能的2个元素的组合
for c in itertools.combinations('ABCD', 2):
    print(c)

运行结果:
(‘A’, ‘B’)
(‘A’, ‘C’)
(‘A’, ‘D’)
(‘B’, ‘C’)
(‘B’, ‘D’)
(‘C’, ‘D’)

  1. itertools.combinations_with_replacement(iterable, r)
    返回所有可能的组合,允许重复元素。
import itertools
# 返回序列的所有可能的2个元素的组合,允许元素重复
for c in itertools.combinations_with_replacement('ABCD', 2):
    print(c)

运行结果:
(‘A’, ‘A’)
(‘A’, ‘B’)
(‘A’, ‘C’)
(‘A’, ‘D’)
(‘B’, ‘B’)
(‘B’, ‘C’)
(‘B’, ‘D’)
(‘C’, ‘C’)
(‘C’, ‘D’)
(‘D’, ‘D’)

这些是 itertools 中一些常见函数的示例和运行结果。由于 itertools 提供的是迭代器,所以这些函数在处理大数据集时非常高效,因为它们不需要一次性将所有数据加载到内存中。

itertools combinations

在Python中,itertools 模块提供了一个名为 combinations 的函数,它可以用来生成指定长度的组合。组合是从一个大集合中选择若干个元素组成子集,且子集中的元素不考虑顺序。
以下是如何使用 itertools.combinations 的一个基本示例:
首先,你需要导入 itertools 模块:
import itertools

然后,你可以使用 combinations 函数来生成组合:

# 定义一个集合
my_set = [1, 2, 3, 4]

# 生成长度为 2 的所有组合
for combo in itertools.combinations(my_set, 2):
    print(combo)

这段代码会输出:
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

itertools.combinations 函数的第一个参数是一个可迭代对象,第二个参数是要生成的组合的长度。函数会返回一个迭代器,每次迭代返回一个元组,包含一个组合。

如果你想要生成所有可能的组合,可以使用 combinations 函数的第二个参数来指定不同的长度:

# 生成所有可能长度的组合
for r in range(len(my_set)+1):
    for combo in itertools.combinations(my_set, r):
        print(combo)

这段代码会输出从长度为1到集合长度的所有组合。
请注意,组合的数量会随着组合长度的增加而急剧增加,所以如果你的集合很大,生成很长的组合可能会消耗大量的计算资源。


http://www.kler.cn/news/325268.html

相关文章:

  • Wireshark_流量分析
  • Go基础学习05-数组和切片关系深度解析
  • 主数据管理的误区有哪些?
  • 数据结构:二叉树的遍历和线索二叉树
  • 创建数据/采集数据+从PI数据到PC+实时UI+To PLC
  • 基于Vue3组件封装的技巧分享
  • 基于PHP+MySQL组合开发地方门户分类信息网站源码系统 带完整的安装代码包以及搭建部署教程
  • 【数据结构-栈】力扣1441. 用栈操作构建数组
  • Linux防火墙-nat表
  • 828华为云征文 | 使用 Memtester 对华为云 X 实例进行内存性能测试
  • 深入探讨AI 神经网络:类型、特点与创新应用
  • AGI interior designer丨OPENAIGC开发者大赛高校组AI创作力奖
  • C++【类和对象】(取地址运算符重载与实现Date类)
  • 无人机之物流货运篇
  • PDCA优化任务流程
  • OpenCV图像文件读写(2) 检查 OpenCV 是否支持某种图像格式的写入功能函数haveImageWriter()的使用
  • 画个心,写个花!Python Turtle库带你玩转创意绘图!
  • bluefs _flush_range allocated: osd用空间但是显示ceph_bluefs_db_used_bytes is 100%
  • 【国庆要来了】基于Leaflet的旅游路线WebGIS可视化实践
  • 240924-通过服务器代理ip地址及port端口wget等下载文件
  • 如何判断IP有没有被污染过
  • 产品管理 - 互联网产品(3) : 迭代管理
  • 小米笔记本电脑笔记
  • es7.13.2请求体过大
  • java8:处理数据stream并传值
  • 瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法
  • pysim-1
  • [Redis][集群][上]详细讲解
  • ComfyUI 速度更快,显存占用更低的图像反推模型Florence2PromptGen,效果媲美JoyCaption,还支持Flux训练打标
  • Linux驱动开发(速记版)--驱动基础