gpt4 book ai didi

python - 如何从给定列表中选择所有可能的子列表对,其并集将是列表?

转载 作者:行者123 更新时间:2023-12-01 00:52:06 26 4
gpt4 key购买 nike

给定一个列表[4,5,6,7],我想编写一个输出的函数所有对如 ([4,5,7],[6]) ,( [4,5] , [6,7])子列表的长度不固定

我使用了一个 for 循环和两个新列表将第 i 个元素附加到列表一个并将剩余的附加到列表 2 然后重复该过程我知道这是一个愚蠢的方法

a = [4,5,6,7]
for x in range(0,len(a)):
b = []
c = []
b.append(a[x])
for y in range(0,len(a)):
if y!=x:
c.append(a[y])
print(b,c)
for x in range(0,len(a)-1):
b = []
c = []
b.append(a[x])
b.append(a[x+1])
for y in range(0,len(a)):
if y!=x and y!=x+1:
c.append(a[y])
print(b,c)

我希望打印所有可能的子列表,但总是错过不连续的子列表,我得到( [4, 5 ] , [6,7] ) 但从未生成([4,6],[5,7])

最佳答案

这是一个不删除重复项的解决方案:

from itertools import combinations

a = [4,4,5,6,7]
result = []

for x in range(len(a) + 1):
for left in combinations(a, x):
right = a.copy()
for ele in left:
right.remove(ele)
result.append([list(left), right])

for res in result:
print(res)

输出:

[[], [4, 4, 5, 6, 7]]
[[4], [4, 5, 6, 7]]
[[4], [4, 5, 6, 7]]
[[5], [4, 4, 6, 7]]
[[6], [4, 4, 5, 7]]
[[7], [4, 4, 5, 6]]
[[4, 4], [5, 6, 7]]
[[4, 5], [4, 6, 7]]
[[4, 6], [4, 5, 7]]
[[4, 7], [4, 5, 6]]
[[4, 5], [4, 6, 7]]
[[4, 6], [4, 5, 7]]
[[4, 7], [4, 5, 6]]
[[5, 6], [4, 4, 7]]
[[5, 7], [4, 4, 6]]
[[6, 7], [4, 4, 5]]
[[4, 4, 5], [6, 7]]
[[4, 4, 6], [5, 7]]
[[4, 4, 7], [5, 6]]
[[4, 5, 6], [4, 7]]
[[4, 5, 7], [4, 6]]
[[4, 6, 7], [4, 5]]
[[4, 5, 6], [4, 7]]
[[4, 5, 7], [4, 6]]
[[4, 6, 7], [4, 5]]
[[5, 6, 7], [4, 4]]
[[4, 4, 5, 6], [7]]
[[4, 4, 5, 7], [6]]
[[4, 4, 6, 7], [5]]
[[4, 5, 6, 7], [4]]
[[4, 5, 6, 7], [4]]
[[4, 4, 5, 6, 7], []]

关于python - 如何从给定列表中选择所有可能的子列表对,其并集将是列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56496867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com