两个字符串列表中的列表组合

时间:2018-03-15 10:12:46

标签: python python-3.x list

我有两个列表,我需要从这些列表中组合字符串,我已经尝试过,但我认为它对于较大的列表效率不高。

data = ['keywords', 'testcases']
data_combination = ['data', 'index']
final_list = []
for val in data:
    for comb in range(len(data_combination)):
        if comb == 1:
            final_list.append([val]  + data_combination)
        else:
            final_list.append([val, data_combination[comb]])

我的输出是:

 [['keywords', 'data'],
 ['keywords', 'data', 'index'],
 ['testcases', 'data'],
 ['testcases', 'data', 'index']]

还有更多的pythonic方式来实现吗?

2 个答案:

答案 0 :(得分:7)

列表理解是一种方式。 “Pythonic”是主观的,我不会声称这是最可读或最理想的方法。

data = ['keywords', 'testcases']
data_combination = ['data', 'index']

res = [[i] + data_combination[0:j] for i in data \
       for j in range(1, len(data_combination)+1)]

# [['keywords', 'data'],
#  ['keywords', 'data', 'index'],
#  ['testcases', 'data'],
#  ['testcases', 'data', 'index']]

答案 1 :(得分:1)

可能更加Pythonic:

<强>代码

data = ["keywords", "testcases"]
data_combination = ["data", "index"]

[[x] + data_combination[:i] for x in data for i, _ in enumerate(data_combination, 1)]

输出

[['keywords', 'data'],
 ['keywords', 'data', 'index'],
 ['testcases', 'data'],
 ['testcases', 'data', 'index']]