您现在的位置是:亿华云 > 域名
深入Python中的itertools模块
亿华云2025-10-08 23:13:22【域名】4人已围观
简介在Python中有一个功能强大的迭代工具包itertools,是Python自带的标准工具包之一。product由于itertools是内置库,不需要任何安装,直接import itertools即可
在Python中有一个功能强大的深入迭代工具包itertools,是深入Python自带的标准工具包之一。
product
由于itertools是深入内置库,不需要任何安装,深入直接import itertools即可。深入
product 用于求多个可迭代对象的深入笛卡尔积(Cartesian Product),它跟嵌套的深入 for 循环等价.即:
笛卡尔乘积是指在数学中,两个集合X和Y的深入笛卡尔积(Cartesian product),又称直积,深入表示为X × Y。深入
product(A,深入 B)和 ``((x,y) for x in A for y in B)`一样.
import itertools for item in itertools.product([1,2,3],[100,200]): print(item) # 输出如下 (1, 100) (1, 200) (2, 100) (2, 200) (3, 100) (3, 200)permutations
通俗地讲,permutations就是深入返回可迭代对象的所有数学或者字符的全排列方式。
全排列,源码库深入即产生指定数目的深入元素的所有排列(顺序有关),也就是深入高中排列组合中的那个A。
permutations它接受一个集合对象,然后产生一个元组序列。
比如print(list(itertools.permutations(abc,3))),共有种情况。
items = [a,b,c] from itertools import permutations for i in permutations(items): print(i) #排列组合 print(list(itertools.permutations(abc,3))) # 输出如下 (a, b, c) (a, c, b) (b, a, c) (b, c, a) (c, a, b) (c, b, a) [(a, b, c), (a, c, b), (b, a, c), (b, c, a), (c, a, b), (c, b, a)]如果需要指定长度的所有排列,可以传递一个可选的长度参数r。
items = [a,b,c] from itertools import permutations for i in permutations(items,2): print(i) #排列组合 # 输出如下 (a, b) (a, c) (b, a) (b, c) (c, a) (c, b)combinations
求列表或生成器中指定数目的元素不重复的所有组合
itertools.permutations(iter,r) 和 itertools.combinations(iter,r)的区别是:前者是permutations允许重复使用,后者combinations是不能重复使用
>>> print(list(itertools.combinations(abc,3))) [(a, b, c)]combinations_with_replacement
combinations_with_replacement和combinations很相似,唯一的免费信息发布网不同在于前者combinations_with_replacement集合类型中的数据是可以重复的
>>> print(list(itertools.combinations_with_replacement(abc,3))) [(a, a, a), (a, a, b), (a, a, c), (a, b, b), (a, b, c), (a, c, c), (b, b, b), (b, b, c), (b, c, c), (c, c, c)]accumulate
accumulate用于对列表中元素逐个累加
>>> import itertools >>> x = itertools.accumulate(range(10)) >>> print(list(x)) [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]compress
compress()是筛选工具,它接受一个可迭代对象以及一个布尔选择序列作为输入,输出时会将所有布尔序列中为True的可迭代对象输出。
import itertools its=["a","b","c","d","e","f","g","h"] selector=[True,False,1,0,3,False,-2,"y"] for item in itertools.compress(its,selector): print (item) a c e g hcount
count(初值=0, 步长=1)是 创建一个迭代器,从传入的起始参数开始的均匀间隔的数值。
我们来看一个简单的例子
from itertools import count for i in count(10): #从10开始无限循环 if i > 20: break else: print(i) 10 11 12 13 14 15 16 17 18 19 20chain
chain链条,主要用来把多个序列连在一起做迭代。
import itertools chain = itertools.chain([1, 2, 3], [4, 5, 6]) for c in chain: print(c) 1 2 3 4 5 6chain还有一个非常重要的功能就是展平列表。
>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8])) [1, 2, 3, 4, 5, 6, 7, 8]cycle
import itertools cycle = itertools.cycle([1, 2, 3]) for c in cycle: print(c)运行结果输出 1 2 3 1 2 3……一直周而复始,永不停息。
香港云服务器很赞哦!(51453)
上一篇: 二、如何选择合适的域名
下一篇: 四、一定要仔细阅读细节
相关文章
- CNAME:对应解析的记录值为域名地址
- 面试官:什么是 Java 注解?
- 再棘手的线上故障,都逃不过这些高效排查套路
- Node.js 与 PHP:理解服务器端开发
- 其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
- 面试官问我:解释一下Dubbo服务暴露
- 高并发整体可用性:一文详解降级、限流和熔断
- 庖丁解牛-图解MySQL 8.0优化器查询解析篇
- 4.域名的整体品牌营销力
- RabbitMQ 高可用之如何确保消息成功消费