如何在python中连接多个数组的数组

时间:2016-06-08 05:44:46

标签: python arrays

我有4个这样的数组:

temp1 = ['a' , 'b' , 'c']
temp2 = ['d' , 'e' ,'' ]
temp3 = ['f']
temp4 = ['g']

我想要输出:

adfg
aefg
afg
bdfg
befg
bfg
cdfg
cefg
cfg

我用以下方法解决了这个问题:

temp1 = ['a' , 'b' , 'c']
temp2 = ['d' , 'e' ,'' ]
temp3 = ['f']
temp4 = ['g']
for list_1 in temp1:
    for list_2 in temp2:
        for list_3 in temp3:
            for list_4 in temp4:
                temp_list = ''
                if list_1: temp_list += list_1
                if list_2: temp_list += list_2
                if list_3: temp_list += list_3
                if list_4: temp_list += list_4
                print "%s " %(temp_list)

但我认为我的代码效率不高。

如何制作好的算法并使其高效。

如果temp3为null,例如:

temp1 = ['a' , 'b' , 'c']
temp2 = ['d' , 'e' ,'' ]
temp3 = []
temp4 = ['g']

3 个答案:

答案 0 :(得分:5)

您可以使用itertools.product

>>> from itertools import product
>>> result = product(temp1, temp2, temp3, temp4)
>>> ["".join(item) for item in result]
['adfg', 'aefg', 'afg', 'bdfg', 'befg', 'bfg', 'cdfg', 'cefg', 'cfg']

<强>更新

如果更新的问题中temp3为空,我认为您希望在生成结果时跳过它。如果是这种情况,您只能使用包含某些项目的列表:

>>> input_lists = [arr for arr in (temp1, temp2, temp3, temp4) if arr]
>>> result = product(*input_lists)
>>> ["".join(item) for item in result]
['adg', 'aeg', 'ag', 'bdg', 'beg', 'bg', 'cdg', 'ceg', 'cg']

答案 1 :(得分:1)

使用itertools.product()

>>> import itertools
>>> result = [''.join(i) for i in itertools.product(temp1,temp2,temp3,temp4)]
>>> result
['adfg', 'aefg', 'afg', 'bdfg', 'befg', 'bfg', 'cdfg', 'cefg', 'cfg']

答案 2 :(得分:0)

使用Python理解。它们更干净,更优雅。

temp1 = ['a' , 'b' , 'c']
temp2 = ['d' , 'e' ,'' ]
temp3 = ['f']
temp4 = ['g']

templist = [i+j+k+l for i in temp1 for j in temp2 for k in temp3 for l in temp4] 
# Result - ['adfg', 'aefg', 'afg', 'bdfg', 'befg', 'bfg', 'cdfg', 'cefg', 'cfg']

i + j + k + l有助于连接字符串。无论何时打算使用列表中的项目,请尝试使用理解。

您可以查看http://www.pythonforbeginners.com/basics/list-comprehensions-in-python