Skip to main content
 首页 » 编程设计

python之两个列表中元素的组合

2025年05月04日14insus

我有两个列表:

list1 = ["a", "b", "c", "d"] 
list2 = [1, 2, 3] 

我想从 list1 中取出 3 个元素,从 list2 中取出 2 个元素进行组合,如下所示(总共 12 种组合):

[a b c 1 2] 
[a b c 1 3] 
[a b c 2 3] 
[a b d 1 2] 
[a b d 1 3] 
[a b d 2 3] 
[a c d 1 2] 
[a c d 1 3] 
[a c d 2 3] 
[b c d 1 2] 
[b c d 1 3] 
[b c d 2 3] 

这是我无法使用的代码:

import itertools 
from itertools import combinations  
 
def combi(arr, r):  
    return list(combinations(arr, r))  
 
# Driver Function  
if __name__ == "__main__":  
    a = ["a", "b", "c", "d"]  
    r = 3 
    a= combi(arr, r) 
    print (a) 
    b = [1, 2, 3] 
    s =2 
    b = combi(brr, s) 
    print (b) 
    crr = a + b 
    print (crr) 
    c = combi(crr, 2) 
    print (c) 
    for i in range(len(c)): 
        for j in range(len(c)): 
            print c[i][j] 
            print '\n'  

请您参考如下方法:

使用 itertools 的组合函数组合、产品和链:

list1 = ["a", "b", "c", "d"] 
list2 = [1, 2, 3] 
 
import itertools 
 
comb1 = itertools.combinations(list1, 3) 
comb2 = itertools.combinations(list2, 2) 
result = itertools.product(comb1, comb2) 
result = [list(itertools.chain.from_iterable(x)) for x in result] 

结果:

[['a', 'b', 'c', 1, 2], 
 ['a', 'b', 'c', 1, 3], 
 ['a', 'b', 'c', 2, 3], 
 ['a', 'b', 'd', 1, 2], 
 ['a', 'b', 'd', 1, 3], 
 ['a', 'b', 'd', 2, 3], 
 ['a', 'c', 'd', 1, 2], 
 ['a', 'c', 'd', 1, 3], 
 ['a', 'c', 'd', 2, 3], 
 ['b', 'c', 'd', 1, 2], 
 ['b', 'c', 'd', 1, 3], 
 ['b', 'c', 'd', 2, 3]] 

这里有 live example