python - 我希望 itertools 返回列表列表

标签 python

我正在使用 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/

相关文章:

python - 对于基于混合位置标签的选择,弃用的 .ix 的替代方案是什么?

php - 我应该在什么基础上构建我的 alpha 平台,PHP、Ruby、Python、.NET 等?

python - Google App Engine 上的 numpy 有哪些替代方案?

c# - 将 c# 类型注入(inject) Ironpython

python - Docopt 在中间接受多个参数?

python - Google App Engine、数据存储和任务队列、性能瓶颈?

python - Tkinter 进度条如何在模型对话框中正确实现

python - Numpy 结构化数组无法进行基本的 numpy 操作

python - 有没有办法告诉 NLTK 某个词不是专有名词而是名词?

python - 通过取出小于一定长度的项目来过滤列表的列表 - 更Pythonic的方式?