我正在使用itertools
生成列表的所有可能排列。我希望它返回一个列表列表,但这不是我得到的。
例如
import itertools
print list(itertools.permutations([1, 2]))
返回
>>> [(1, 2), (2, 1)]
但我期待
>>> [[1, 2], [2, 1]]
有可能吗?
答案 0 :(得分:4)
只需将您的元组映射到列表:
import itertools
try:
# Python 2, use Python 3 iterator version of map
from future_builtins import map
except ImportError:
# already using Python 3
pass
map(list, itertools.permutations([1, 2]))
在Python 3中,map()
也是一个迭代器,因此在迭代时元组会转换为列表。
我在这里假设你不需要一次完整的排列结果。您可以随时在list()
上致电map()
,或者如果您这样做,请使用列表理解:
[list(t) for t in itertools.permutations([1, 2])]
或者对于Python 2,只需删除from future_builtins
导入并离开map
即可生成列表。
答案 1 :(得分:4)
您可以使用列表推导将每个元组转换为列表并将结果收集到列表中:
>>> [list(p) for p in itertools.permutations([1, 2])]
[[1, 2], [2, 1]]