Python:在不使用任何内置函数(如 itertools 等)的情况下查找幂集
Python : Finding power set without using any inbuilt function like itertools etc
我正在尝试使用位查找幂集 manipulation.I 可以生成所有集,但它们不可索引。我无法将其保存为列表列表。我尝试在网上查找解决方案,但无法获取相关信息。
这是我使用的代码。
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)
输出:
[1, 2, 1, 2, 3, 1, 3, 2, 3, 1, 2, 3]
期望的输出:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
实际上你可以使用一个临时列表 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)
因此,有了这个输入:
2
2
3
它将输出:
[[], [2], [3], [2, 3]]
我正在尝试使用位查找幂集 manipulation.I 可以生成所有集,但它们不可索引。我无法将其保存为列表列表。我尝试在网上查找解决方案,但无法获取相关信息。
这是我使用的代码。
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)
输出:
[1, 2, 1, 2, 3, 1, 3, 2, 3, 1, 2, 3]
期望的输出:
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
实际上你可以使用一个临时列表 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)
因此,有了这个输入:
2
2
3
它将输出:
[[], [2], [3], [2, 3]]