在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python二維列表,每個子列表(元素個數(shù)不同)取一個元素進行組合,列出所有可能

python二維列表,每個子列表(元素個數(shù)不同)取一個元素進行組合,列出所有可能的情況

比如,已知二維列表[[a,b,c],[d,e],[f]],要求從每個子列表中選出一個元素進行相加,列出所有的組合情況,本題輸出為adf,aef,bdf,bef,cdf,cef這6種可能。有很多這樣的列表,子列表個數(shù)不一定相同,請教怎么用python進行處理

回答
編輯回答
有點壞

不多說,上代碼

#!/usr/bin/python

arr = [
    [
        'a', 'b', 'c',
    ],
    [
        'd', 'e',
    ],
    [
        'f', 'g', 'h'
    ]
]



result = []
length = 1
for row in arr:
    length *= len(row) 

# 初始化返回值數(shù)組長度
for i in range(0, length):
    result.append([])

for row in arr:
    i = 0
    while i < len(result):
        for letter in row:
            result[i].append(letter)
            i += 1

for row in result:
    print ",".join(row)
2017年7月2日 16:33
編輯回答
敢試

當然使用遞歸了。
那你給的例子,處理整個列表相當于處理 [[d, e], [f]] 的結果(假設是 x) 加上 遍歷第一項 [a, b, c],也就是就是最后的結果。至于對 [[d, e], [f]] 的處理,可以繼續(xù)往下遞歸

2017年12月3日 21:51
編輯回答
近義詞
>>> import itertools
>>> s = [['a','b','c'],['d','e'],['f']]
>>> [''.join(i) for i in itertools.product(*s)]
['adf', 'aef', 'bdf', 'bef', 'cdf', 'cef']
2017年4月1日 10:59