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

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:breakprint(i)

运行结果:
1
2
3
4
5

  1. itertools.cycle(iterable)
    循环遍历一个可迭代对象。
import itertools
# 循环打印序列中的元素,直到打印5次
for c in itertools.cycle('ABCD'):if c == 'D':  # 当打印到D时,实际上是第二个D,循环了一次breakprint(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.lryc.cn/news/447444.html

相关文章:

  • Apache Iceberg 数据类型参考表
  • 职责链模式
  • 新品 | Teledyne FLIR IIS 推出Forge 1GigE SWIR 短波红外工业相机系列
  • 深入MySQL:掌握索引、事务、视图、存储过程与性能优化
  • 【WSL——Windows 上使用 Linux 环境】
  • Redis:事务
  • 策略模式的介绍和具体实现
  • MySQL InnoDB MVCC数据结构分析
  • MySQL 8 查看 SQL 语句的执行进度
  • OpenStack 部署实践与原理解析 - Ubuntu 22.04 部署 (DevStack)
  • 【软件工程】可行性研究
  • 乌克兰因安全风险首次禁用Telegram
  • [SDX35]SDX35如何查看GPIO的Base值
  • 【Linux学习】【Ubuntu入门】2-1-1 vim编辑器设置
  • 全栈开发(一):springBoot3+mysql初始化
  • 有关若依登录过程前端的对应处理学习
  • django使用笔记6--docker部署
  • 高性能、高可靠,MK SD卡让数据存储无忧!
  • NetAssist测试TCP和UDP
  • mcuboot使用介绍
  • 如何在 Linux 终端使用 GET 和 POST 请求
  • 主从数据库同步配置详解(MySQL/MariaDB)
  • 台式机通过笔记本上网
  • golang雪花算法实现64位的ID
  • LeetCode 137. 只出现一次的数字 II
  • 新书推荐——《深度学习精粹与PyTorch实践》
  • Docker:解决开发运维问题的开源容器化平台
  • 多线程计算π
  • JAVA开源项目 足球俱乐部管理后台 计算机毕业设计
  • Arthas memory(查看 JVM 内存信息)