您的位置是:网站首页>Python编程Python编程

深入认识Python中的itertools模块

少儿编程网2020-11-13 13:31:34Python编程 人已围观 来源:少儿编程 -用户投稿

简介Python视频教程栏目介绍itertools模块。在Python中有一个功能强大的迭代工具包itertools,是Python自带的标准工具包之一。product由于itertools是内置库,不需要任何安装,直接importitertools即可。product用于求多个可迭代对象的笛卡尔积(C

欢迎访问少儿编程网(http://www.pxcodes.com)

python视频教程栏目介绍itertools模块。

BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

在Python中有一个功能强大的迭代工具包itertools,是Python自带的标准工具包之一。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

product

由于itertools是内置库,不需要任何安装,直接import itertools即可。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

product 用于求多个可迭代对象的笛卡尔积(Cartesian Product),它跟嵌套的 for 循环等价.即:BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × YBKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

product(A, B)和 ``((x,y) for x in A for y in B)`一样.BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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就是返回可迭代对象的所有数学或者字符的全排列方式。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

全排列,即产生指定数目的元素的所有排列(顺序有关),也就是高中排列组合中的那个ABKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

permutations它接受一个集合对象,然后产生一个元组序列。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

比如print(list(itertools.permutations('abc',3))),共有A33=6A_3^3=6种情况。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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')]复制代码

如果需要指定长度的所有排列,可以传递一个可选的长度参数rBKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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

求列表或生成器中指定数目的元素不重复的所有组合BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

itertools.permutations(iter,r)itertools.combinations(iter,r)的区别是:前者是permutations允许重复使用,后者combinations是不能重复使用BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

>>> print(list(itertools.combinations('abc',3)))
[('a', 'b', 'c')]复制代码

combinations_with_replacement

combinations_with_replacementcombinations很相似,**的不同在于前者 combinations_with_replacement集合类型中的数据是可以重复的BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

>>> 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用于对列表中元素逐个累加BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

>>> import itertools
>>> x = itertools.accumulate(range(10))
>>> print(list(x))
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码

compress

compress()是筛选工具,它接受一个可迭代对象以及一个布尔选择序列作为输入,输出时会将所有布尔序列中为True的可迭代对象输出。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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
h   
复制代码

count

count(初值=0, 步长=1)是 创建一个迭代器,从传入的起始参数开始的均匀间隔的数值。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

我们来看一个简单的例子BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

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
20复制代码

chain

chain链条,主要用来把多个序列连在一起做迭代。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

import itertools
chain = itertools.chain([1, 2, 3], [4, 5, 6])
for c in chain:
   print(c)
1
2
3
4
5
6  
复制代码

chain还有一个非常重要的功能就是展平列表。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

>>> 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……一直周而复始,永不停息。BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

相关免费学习推荐:python视频教程BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

以上就是深入认识Python中的itertools模块的详细内容,更多请关注少儿编程网其它相关文章!BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

来源:php中文网BKf少儿编程网-Scratch_Python_教程_免费儿童编程学习平台

欢迎访问少儿编程网(http://www.pxcodes.com)

相关文章:

支持一下 ( )

深入认识Python中的itertools模块

      匿名评论
    • 评论
    人参与,条评论
    深入认识Python中的itertools模块

微信公众号

免费视频教程

先知道