获取位大小N的所有可能位组合

2024-09-27 22:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

为了测试一个全加器,我以三种方式组合了所有可能的0或1输入(一种用于输入a,一种用于输入b,一种用于进位c)。为此,我正在做:

>>> [(bit1, bit2, bit3) for bit1 in a for bit2 in a for bit3 in a]
[(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的方法来做到这一点。类似于内置combinations([0,1], 3)的东西
  • 有没有一种方法可以抽象出清单的理解力,比如说,我可以做20种可能性,而不必写20遍

我已经看了一点itertools,但是在上面的例子中使用它似乎只需要与上面列表一样多的代码(如果不是更多的话)


Tags: 方法in列表for方式可能性内置例子
1条回答
网友
1楼 · 发布于 2024-09-27 22:29:25

您可以使用^{} from ^{}(笛卡尔积):

from itertools import product

print(list(product([0, 1], repeat=3)))

输出:

[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]

要更改每个元组有多少个元素,可以更改repeat参数

相关问题 更多 >

    热门问题