我正在使用 itertools
生成列表的所有可能排列。我希望它返回一个列表列表,但这不是我得到的。
例如
import itertools
print list(itertools.permutations([1, 2]))
返回
>>> [(1, 2), (2, 1)]
但我很期待
>>> [[1, 2], [2, 1]]
这可能吗?
最佳答案
只需将您的元组映射到列表:
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()
也是一个迭代器,因此元组会在您迭代时转换为列表。
我在这里假设您不需要一次性获得完整的排列结果。您始终可以在 map()
上调用 list()
,或者如果您这样做,则使用列表推导式代替:
[list(t) for t in itertools.permutations([1, 2])]
或者对于 Python 2,只需删除 from future_builtins
导入并保留 map
以生成列表。
关于python - 我希望 itertools 返回列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42625957/