我正在使用Python 2.7。
我有一个列表,想要获取所有可能的有序组合。
import itertools
stuff = ["a","b","c", "d"]
for L in range(1, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
print( ' '.join(subset))
这将会产生以下输出:
a
b
c
d
a b
a c <-- not in correct order
a d <-- not in correct order
b c
b d <-- not in correct order
c d
a b c
a b d <-- not in correct order
a c d <-- not in correct order
b c d
a b c d
但是我希望输出的组合只有与stuff
列表中相同顺序的组合。例如,删除a d
、b d
、a b d
和a c d
,因为它们与stuff
列表["a", "b", "c", "d"]
的顺序不正确。
我已经想出了这个替代方法:
import itertools
stuff = ["a","b","c", "d"]
for L in range(1, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
if ' '.join(subset) in ' '.join(stuff): #added line
print( ' '.join(subset))
给我输出了我想要的结果:
a
b
c
d
a b
b c
c d
a b c
b c d
a b c d
但是在Python中是否有任何内置方法可以做到我想要的?
a d
不是正确的顺序?你所说的“顺序”是什么意思?你只关心原始列表的“片段”吗?为什么a c
是正确的顺序,而a d
不是? 为什么a d
不是正确的排序方式?您指的“排序方式”是什么意思?您只对原始列表的“切片”感兴趣吗?为什么a c
按正确顺序排列而a d
却不是? - poke