itertools

0. Python中引入itertools

1. 笛卡尔积:

 product(iter1, iter2,...,iterN,[repeat=i])

 1 from itertools import product
 2
 3 #笛卡尔积
 4 #3种常见的iter类型
 5 for x in product(‘10‘,repeat=3):
 6     print(x)
 7 for x in product([1,0],repeat=3):
 8     print(x)
 9 for x in product((0,1),repeat=3):
10     print(x)

结果

 1 (‘1‘, ‘1‘, ‘1‘)
 2 (‘1‘, ‘1‘, ‘0‘)
 3 (‘1‘, ‘0‘, ‘1‘)
 4 (‘1‘, ‘0‘, ‘0‘)
 5 (‘0‘, ‘1‘, ‘1‘)
 6 (‘0‘, ‘1‘, ‘0‘)
 7 (‘0‘, ‘0‘, ‘1‘)
 8 (‘0‘, ‘0‘, ‘0‘)
 9
10 (1, 1, 1)
11 (1, 1, 0)
12 (1, 0, 1)
13 (1, 0, 0)
14 (0, 1, 1)
15 (0, 1, 0)
16 (0, 0, 1)
17 (0, 0, 0)
18
19 (0, 0, 0)
20 (0, 0, 1)
21 (0, 1, 0)
22 (0, 1, 1)
23 (1, 0, 0)
24 (1, 0, 1)
25 (1, 1, 0)
26 (1, 1, 1)

复杂示例

lucky+=[int(‘‘.join([str(y) for y in x])) for x in list(product([4,7],repeat=i))]

2.全排列

 permutations(iterable,[,r])

1 from itertools import permutations
2
3 for x in permutations(‘ABC‘):
4     print(x)

结果

(‘A‘, ‘B‘, ‘C‘)
(‘A‘, ‘C‘, ‘B‘)
(‘B‘, ‘A‘, ‘C‘)
(‘B‘, ‘C‘, ‘A‘)
(‘C‘, ‘A‘, ‘B‘)
(‘C‘, ‘B‘, ‘A‘)

未完待续...

时间: 2024-12-20 11:21:26

itertools的相关文章

用itertools.product简化嵌套for循环

今天这一题叫做"偷瞄到的密码": 警察跟踪一名窃贼来到了一个仓库门前.仓库的密码锁盘如下: 1 2 3 4 5 6 7 8 9 0 窃贼输入密码后进了门.警察"觉得"自己看到了密码比如1357,但是也有可能是相邻的数字(相邻仅包括正上下左右,不包括对角线),比如第一位不是1,而是相邻的4和2(不包括5). 可能的密码是哪些组合呢? 这道题目可以抽象成: 1. 0-9各自都对应了一组相邻数字 现给定一个数字串: 2. 对数字串中的每个数字,找到对应的相邻数组 3. 计

用itertools解决无序排列组合问题

最近我作为Python菜鸟一枚开始征战Codewars,所以打算在这里记下遇到的有意思的题目.今天这第一题叫做"Best Travel": John和Mary计划去一些小镇旅行.Mary已经列好了这些小镇之间的距离比如ls=[50, 55, 57, 58, 60].但是John不想开车太累,所以提出了两个要求:1) 开车不超过某个距离比如t=174 miles 2) 只能去3个小镇. 选择哪3个小镇可以让John和Mary都满意呢?(即找到距离之和最接近或等于t的3个小镇) 这道题目可

Python:itertools模块

itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. chain(iter1, iter2, ..., iterN): 给出一组迭代器(iter1, iter2, ..., iterN),此函数创建一个新迭代器来将所有的迭代器链接起来,返回的迭代器从iter1开始生成项,知道iter1被用完,然后从iter2生成项,这一过程会持续到iterN中所有的项都被

itertools内置库

1 itertools.chain(*iterable) 将多个序列作为一个单独的序列返回 import itertools for ele in itertools.chain('We', ' are ', ' champion.'): print ele output: W e a r e c h a m p i o n . 在iter中添加判断类 2 itertools.compress(data, selector) 返回selector为True的data对应元素 import ite

Python标准库13 循环器 (itertools)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器将依次返回一个对象.直到所有的对象遍历穷尽,循环器将举出StopIteration错误. 在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束.使

itertools模块

itertools模块概览 +生成无限迭代器 count(start, [step]) #从start开始,步长为step的无限整数迭代器(step默认值为1) cycle(iterable) #不断循环iterable而得到的无限迭代器 repeat(object, [n]) #重复object对象n次生成的迭代器 (n默认值为无穷大) +处理输入序列得到新的迭代器 chain(*iterables)             #将多个序列串联 compress(data, selectors)

Python3之itertools模块

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 1.Infinite Iterators Iterator Arguments Results Example count() start, [step] start, start+step, start+2*step, ... count(10) --> 10 11 12 13 14 ... cycle() p p0, p1, ... plast, p0, p1, ... cycle('ABCD') --> A

Python 模块 itertools

python 2.6 引入了itertools模块,使得排列组合的实现非常简单: import itertools 有序排列:e.g., 4个数内选2个排列: >>> print list(itertools.permutations([1,2,3,4],2)) [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] 无序组合:e.g.,4个数内选2个

Python标准库:迭代器Itertools

Infinite Iterators: Iterator Arguments Results Example count() start, [step] start, start+step, start+2*step, ... count(10) --> 10 11 12 13 14 ... cycle() p p0, p1, ... plast, p0, p1, ... cycle('ABCD') --> A B C D A B C D ... repeat() elem [,n] elem

python模块之itertools

在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器将依次返回一个对象.直到所有的对象遍历穷尽,循环器将举出StopIteration错误. 在for i in iterator结构中,循环器每次返回的对象将赋予给i,直到循环结束.使用iter()内置函数,我们可以将诸如表.字典等容器变为循环器.比如 for i in iter([2, 4, 5,