我有这个清单:
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循环并可能将它应用于更长的列表。
答案 0 :(得分:0)
您正在创建长度增加的组合,因此请使用长度范围为1到itertools.combinations()
的{{1}}:
len(inputlist)
>>> 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)
会产生元组,但是如果你必须为每个元组都有一个可变序列,那么这些元素很容易转换成列表。