Skip to main content
 首页 » 编程设计

python之需要创建一个新的 Python 列表,其中包含另一个列表的所有可能的唯一组合

2025年05月04日13wuhuacong

我目前有一个选择列表:

a = ['D1',  
    'C1',  
    'D2',  
    'C2',  
    'D3',  
    'C3',  
    'D4',  
    'C4',  
    'D5',  
    'C5',] 

我想要一个新列表,其中包含可能组合中的嵌套列表。像这样:

b = [ 
'D1',  
'C1',  
'D2',  
'C2',  
'D3',  
'C3',  
'D4',  
'C4',  
'D5',  
'C5', 
['D1', 'C1'],  
['D1', 'D2'],  
['D1', 'C2']  
. 
.  
['D1', 'C1', 'D2']  
. 
.  
['D1', 'C1', 'D2', 'C2']  
. 
.  
['D1', 'C1', 'D2', 'C2', 'D3'] 
: 
etc 

请您参考如下方法:

查看 itertools.combinations :

b = [] 
for len_ in xrange(len(a)): 
    b.extend(itertools.combinations(a, len_+1) 

另见 powerset recipe来自 itertools 文档:

def powerset(iterable): 
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" 
    s = list(iterable) 
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))