从列表中提取组合

2024-03-29 02:09:05 发布

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

我有这个清单:

List = [1, 2, 3]

…我想打印出所有可能的组合,这样输出结果就像:

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

到目前为止,我的代码是:

E=[]
i=0
for seq in L[i:]:
    E.append(seq)
    i += 1
    print(E)

它给出了我的前3个输出。有没有一种方法让我循环它,使索引上升1,这样我就可以得到我想要的输出

编辑;所以我基本上想写一段代码来总结这一点:

List = [1, 2, 3]
E = []
F = []
G = []


for seq in List[0:]:
    E.append(seq)
    print(E)

for seq in List[1:]:
    F.append(seq)
    print(F)

for seq in List[2:]:
    G.append(seq)
    print(G)

我非常想知道是否可以循环索引,这样就不必创建多个for循环,也不必将其应用于更长的列表


Tags: 方法代码in编辑列表forseqlist
1条回答
网友
1楼 · 发布于 2024-03-29 02:09:05

您正在创建长度递增的组合,因此使用长度范围为1到len(inputlist)itertools.combinations()

>>> from itertools import combinations
>>> List = [1, 2, 3]
>>> for i in range(len(List)):
...     for combo in combinations(List, r=i + 1):
...         print(combo)
...
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)

combinations()生成元组,但如果必须为每个元组提供可变序列,则这些元组通常会转换为列表

相关问题 更多 >