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

5

我有两个列表,需要将这些列表中的字符串进行组合,我尝试过但对于更大的列表来说效率不高。

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个回答

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']]

2
这比楼上的解决方案更高效吗?只是好奇。 - Keyur Potdar
1
列表推导式在大多数情况下是最有效的,因此应该使用它。 - Sqoshu

1
可能更符合Python风格的代码:

代码

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']]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接