python itertools模块实现排列组合

转自:https://blog.csdn.net/specter11235/article/details/71189486

一、笛卡尔积:itertools.product(*iterables[, repeat])

直接对自身进行笛卡尔积:

import itertools
for i in itertools.product(‘ABCD‘, repeat = 2):
    print (‘‘.join(i),end=‘ ‘)

输出结果: 
AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD 
print (”.join(i))这个语句可以让结果直接排列到一起 
end=’ ‘可以让默认的输出后换行变为一个空格

两个元组进行笛卡尔积:

import itertools
a = (1, 2, 3)
b = (‘A‘, ‘B‘, ‘C‘)
c = itertools.product(a,b)
for i in c:
    print(i,end=‘ ‘)

输出结果: 
(1, ‘A’) (1, ‘B’) (1, ‘C’) (2, ‘A’) (2, ‘B’) (2, ‘C’) (3, ‘A’) (3, ‘B’) (3, ‘C’)

二、排列:itertools.permutations(iterable[, r])

import itertools
for i in itertools.permutations(‘ABCD‘, 2):
    print (‘‘.join(i),end=‘ ‘)

输出结果: 
AB AC AD BA BC BD CA CB CD DA DB DC

三、组合:itertools.combinations(iterable, r)

import itertools
for i in itertools.combinations(‘ABCD‘, 3):
    print (‘‘.join(i))

输出结果: 
ABC 
ABD 
ACD 
BCD

四、组合(包含自身重复):itertools.combinations_with_replacement(iterable, r)

import itertools
for i in itertools.combinations_with_replacement(‘ABCD‘, 3):
    print (‘‘.join(i),end=‘ ‘)

输出结果: 
AAA AAB AAC AAD ABB ABC ABD ACC ACD ADD BBB BBC BBD BCC BCD BDD CCC CCD CDD DDD

原文地址:https://www.cnblogs.com/eternal1025/p/9523534.html

时间: 2024-10-08 20:49:03

python itertools模块实现排列组合的相关文章

python, itertools模块

通过itertools模块,可以用各种方式对数据进行循环操作 1, chain() from intertools import chain for i in chain([1,2,3], ('a', 'b', 'c'), 'abcde'): print i chain将可迭代的对象链接在一起,iter1循环完后,接着循环iter2.直到所有的iter循环完. 2, combinations() from intertools import combinations for i in combi

python itertools模块练习

参考 <python标准库> 也可以参考Vamei博客 列表用着很舒服,但迭代器不需要将所有数据同时存储在内存中. 本章练习一下python 标准库中itertools模块 合并 和 分解 迭代器 1.chain() 处理多个序列,而不比构造一个大的,两个合在一起,遍历就好了 >>> for i in chain(range(3),range(5,9)): ... print i ... 0 1 2 5 6 7 8 >>> 2.izip() 类似zip,可以

python itertools 模块讲解

1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存.使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环.- 无限迭代器 itertools包自带了三个可以无限迭代的迭代器.这意味着,当你使用他们时,你要知道要的到底是最终会停止的迭代器,还是需要无限地迭代鞋去.(1)count(初值=0, 步长=1):count 迭代器会返回从传入的起始参数开始的均匀间隔的数值.count 也可以接收指定的步长参数.我们来看一个简单的例子: ''' 遇到

Python itertools模块详解

这货很强大, 必须掌握 文档 链接 http://docs.python.org/2/library/itertools.html pymotw 链接 http://pymotw.com/2/itertools/ 基本是基于文档的翻译和补充,相当于翻译了 itertools用于高效循环的迭代函数集合 组成 总体,整体了解 无限迭代器 复制代码代码如下: 迭代器 参数 结果 例子 count() start, [step] start, start+step, start+2*step, ...

Python中列表元素排列组合

1 # 排列 2 from itertools import product 3 l = [1, 2, 3] 4 print(list(product(l, l))) 5 print(list(product(l, repeat=4))) 6 7 # 组合 8 from itertools import combinations 9 print(list(combinations([1,2,3,4,5], 3))) 原文地址:https://www.cnblogs.com/hahasd/p/12

python - itertools 模块

相关文档 文档 链接 pymotw 链接 无限迭代器 itertools.count() 说明 生成一个无限迭代的数字队列, 只有进行 参数 其实数字以及步幅 start, [step] 返回值 start, start+step, start+2*step, ... 示例 count(10) --> 10 11 12 13 14 ... from itertools import * import time c = count(10,5) print c for i in c: time.sl

python 高效的 itertools 模块

迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代器特别适合于遍历大文件或无限集合等,因为我们不用一次性将它们存储在内存中. Python 内置的 itertools 模块包含了一系列用来产生不同类型迭代器的函数或类,这些函数的返回都是一个迭代器,我们可以通过 for 循环来遍历取值,也可以使用 next() 来取值. itertools 模块提供的迭代器函数有以下几种类型: 无限迭代器:生成一个无限序列,比如自然数序列 1, 2,

python 编写排列组合

python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutations(['A','B','C','D'],4)) # 全排列 print(mylist) mylist1 = list(itertools.permutations(['A','B','C','D'],3)) # 4个里面选3个排列 print(mylist1) #5!=1*2*3*4*5 #0!=1 #M个选N个 M!/(M

python 实现排列组合

1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__='dragon' import itertools list1 = [1,2,3,4,5] list2 = [] for i in range(1,len(list1)+1): iter = itertools.combinations(list1,i) list2.append(list(ite