您的位置:首页 > 编程语言 > Python开发

python练习-itertools模块

2016-01-12 16:13 447 查看
”’

给定0123456+-*/ 任意排列使最后的结果等于2016

例如: 6/1+503*4-2 = 2016

要求:这7个数字和4个运算符号必须都用到且只能用一次,先后次序不限

(+)(-)可以当正负号 使用

”’

import itertools
def fun1():
list1 = '0123456+-*/'
#permutations()函数用来排列组合list1中的元素将结果返回到一个迭代器
iter1 = itertools.permutations(list1)

for i in iter1:
temp = ''.join(i) # str.join(sequence) 将序列中的元素以指定的方式连接成一个新的序列
try:
b = eval(zoo)  # 计算表达式的结果
if 2016 == b:
print(temp+' = 2016')
except:
a = 1
fun1()


itertools模块简单整理

ifilter()与filter()类似返回一个迭代器

ifilter(lambda x: x>5,[1,3,4,5,6,7,8])
输出 6, 7 , 8

相反ifilterfalse(lambda x: x>5, [1,3,4,5,6,7,8])
输入1,2,3,4,5


takewhile(lambda x: x<5,[1,3,4,5,6,7,8])


当函数返回true时则继续 当返回false时则停止。 1,2,3,4

dropwhile(lambda x: x>5,[1,3,4,5,6,7,8])


当函数返回false时跳过 返回true时输出。6,7,8

组合函数

chain([1,2,3],[4,5,6])   [1,2,3,4,5,6]


连接两个循环器

permutations('abc',2)  [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]


从’abc’中挑取2个元素排列 结果返回到一个新的迭代器。permutations()组合分顺序 ab,ba都返回

如果permutations()函数不加参数2,则会对’abc’进行全排列

combinations('abc',2) [('a', 'b'), ('a', 'c'), ('b', 'c')]


从’abc’中挑取2个元素排列 结果返回到一个新的迭代器。combinations()组合不分顺序 ab,ba 只返回 ab

combinations_with_replacement('abc',2) [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]


与上面类似 只是多了 重复的如: aa,bb,cc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python