Python:在不使用itertools之类的内置函数的情况下查找powerset

2024-10-04 01:29:16 发布

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

我正在尝试使用位操作来查找功率集。我可以生成所有集,但它们不可索引。我无法将其保存为列表列表。我试图在网上找到解决办法,但没有得到相关信息。在

这是我使用的代码。在

n = int(input()) # Size of the array
noteValue = []   # Array whose power set is to be found
for i in range(n):
    noteValue.append(int(input()))


powerSet = []
for i in range(1<<n):
    for j in range(n):
        if (i & (1<<j) > 0 ):
            powerSet.append(noteValue[j])

print(powerSet)

输出:

^{pr2}$

期望输出:

[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

Tags: 代码in信息列表forinputsizerange
1条回答
网友
1楼 · 发布于 2024-10-04 01:29:16

实际上,您可以使用一个临时列表sub,如下例所示:

powerSet = []
for i in range(1<<n):
    # Add sub list 
    sub = []
    for j in range(n):
        if (i & (1<<j) > 0 ):
            # Append to sub list
            sub.append(noteValue[j])
    # Then append sub to pwerset after finishing the inner loop
    powerSet.append(sub)

print(powerSet)

因此,有了这个输入:

^{pr2}$

它将输出:

[[], [2], [3], [2, 3]]

相关问题 更多 >