首页 > 解决方案 > 排列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)]。我怎样才能有效地做到这一点?

标签: python-3.x

解决方案


我相信你的问题表明你有一个长度列表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)]

快乐编码!


推荐阅读