python-3.x - 排列python列表中的所有值
问题描述
我有一个列表a = [1, 1, 1]
,我想以a
不同的方式排列,结果可能像
[(0, 0, 0), (0, 0, 1), (0, 1, 1), (1, 0, 0), (0, 1, 0), (1, 1, 0), (1, 0, 1), (1, 1, 1)]
。我怎样才能有效地做到这一点?
解决方案
我相信你的问题表明你有一个长度列表N
(3,在这种情况下,[1,1,1]),如果每个位置的元素可以是 0 或 1,你想要所有可能的组合。(你的问题令人困惑,因为您并没有真正置换 [1,1,1])。
你想要的是itertools.product
,文档在这里。它需要一个迭代列表,并从第一个迭代、第二个迭代等中创建一个项目的每个组合。所以在这种情况下,我们可以通过以下方式实现目标:
> import itertools
> zero_and_one = [0, 1]
> combinations = itertools.product(zero_and_one, zero_and_one, zero_and_one)
> print(list(combinations))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
快乐编码!
推荐阅读
- python - 如何根据 django 中的帖子标题生成 slug?
- linux - 使用 awk 和 truncate 写入同一个文件
- r - 使用 R6 高效创建对象
- python - 一张一张打印字典的值
- sas - 为另一列分配相同的值
- javascript - StencilJS Google Maps 组件不适用于 iOS
- javascript - 如何向 Angular mat 工具提示添加填充?
- jinja2 - 过滤可视化中使用的 SQL Lab 查询。使用 Jinja 模板进行过滤
- reactjs - 无法连接到房间:无效的访问令牌颁发者/主题 - Twilio visio 房间问题
- c# - 组合两个表达式(表达式
>) 在一个单一的