以下代码创建了一个多维列表(不确定Pythonic是不是说它。这里的PHP人员)
patterns.append(list(itertools.permutations('1234567',7)))
模式的价值变为:
([
[1,2,3,4,5,6,7],
[1,2,3,4,5,7,6], ...
])
我想要的是结果是这样的:
([1,2,3,4,5,6,7], [1,2,3,4,5,7,6]...)
如果我尝试这样做:
patterns = list(itertools.permutations('1234567',7))
结果是个别数字列表
123445671234576
我错过了什么?
谢谢,
答案 0 :(得分:1)
如果你需要
([1,2,3,4,5,6,7], [1,2,3,4,5,7,6]...)
比你可以使用:
from itertools import permutations
patterns = tuple(list(int(y) for y in x) for x in permutations('1234567',7))
如果您需要获取数字,则可以使用xrange而不是'1234567':
patterns = tuple(list(x) for x in permutations(xrange(1,8),7))
答案 1 :(得分:1)
您extend()
而不是append()
。
patterns.extend(itertools.permutations('1234567',7))
这也使list()
变得多余,因为extend()
适用于迭代。
这假设您可以将排列本身作为元组。你的问题很混乱,因为你的符号与你用文字写的不一致。
答案 2 :(得分:0)
您可以使用
获取列表元组tuple(list(p) for p in itertools.permutations('1234567', 7))
如果你想要整数而不是单元素字符串,那么一个简单而通用的方法就是
digits = [int(digit) for digit in '1234567']
tuple(list(p) for p in itertools.permutations(digits, 7))