我有两个列表,我需要从这些列表中组合字符串,我已经尝试过,但我认为它对于较大的列表效率不高。
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方式来实现吗?
答案 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']]