下面的代码创建了一个多维列表(不确定这是否是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我遗漏了什么?
谢谢,
发布于 2011-07-11 23:25:06
你是extend()而不是append()。
patterns.extend(itertools.permutations('1234567',7))这也使得list()变得多余,因为extend()工作在可迭代对象上。
这假设您可以将排列本身作为元组。你的问题令人困惑,因为你的符号与你用文字写的不一致。
发布于 2011-07-11 23:24:40
如果您需要
([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))发布于 2011-07-11 23:24:44
您可以使用以下命令获取列表的元组
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))https://stackoverflow.com/questions/6652337
复制相似问题