合并列表的列表(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
我有以下列表:
# 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