合并列表的列表(n=200k)并在最短父列表用尽后停止

Combine lists (n=200k) of lists and stop once shortest parent list is exhausted

我有以下列表:

# list_1 : n=100k
# list_2 : n=200k
list_1 = [['name1', '001'], ['name2', '001'], ...]
list_2 = [['other1', '003'], ['other2', '005'], ...]

我想将它们组合到下面,同时在任一列表用完后停止(根据 zip()):

combined_list = [['name1', '001', 'other1', '003'], ['name2', '001', 'other2', '005']]

我试过 zip() 但这会为每个预期的组合子列表生成一个包含两个列表的元组。

有没有一种方法可以简洁地实现这一点(无需在 zip() 之后进一步循环)?

你试过什么代码?我怀疑您对 zip().

的调用方式有疑问

这将在每个索引处将两个列表加在一起,使用 zip():

list_1 = [['name1', '001'], ['name2', '001']]
list_2 = [['other1', '003'], ['other2', '005']]

combined_list = [x + y for x, y in zip(list_1, list_2)]

print(combined_list)
[['name1', '001', 'other1', '003'], ['name2', '001', 'other2', '005']]

另一种方式(Try it online!):

from operator import concat

combined_list = list(map(concat, list_1, list_2))

具有 1000 倍长列表的基准 (Try it online!):

148 us  map_concat
192 us  list_comprehension

148 us  map_concat
192 us  list_comprehension

148 us  map_concat
193 us  list_comprehension