2024-09-30 16:36:57 发布
网友
我有两个要合并的列表,但实际上我希望加入具有匹配索引的项目,而不是增加列表中的项目数。例如:
List1 = ['A', 'B', 'C'] List2 = ['1', '2', '3'] List3 = ['A1', 'B2', 'C3']
我已经看到了很多关于简单地组合两个列表的问题,但是恐怕我还没有找到任何可以实现的东西。
任何帮助都将不胜感激。干杯。
map(''.join,zip(List1,List2,List3)) >>> ['A1A1', 'B2B2', 'C3C3']
说明:
zip(List1,List2,List3)
回报
[('A', '1', 'A1'), ('B', '2', 'B2'), ('C', '3', 'C3')]
每个元组都会重复压缩列表中与索引N关联的元素。我们想把每个元组中的元素组合成一个字符串。对于一个元组,我们可以:
N
>>> ''.join(('A', '1', 'A1')) 'A1A1'
为了产生所需的结果,从而获得所有所需字符串的列表,我们将这个join函数映射到所有元组,如下所示:
join
map(''.join,zip(List1,List2,List3))
导致
['A1A1', 'B2B2', 'C3C3']
所以如果你只想添加List1和List2
List1
List2
map(''.join,zip(List1,List2)) >>> ['A1', 'B2', 'C3']
一些时间:
Microsoft Windows [Version 6.2.9200] (c) 2012 Microsoft Corporation. All rights reserved. C:\Users\Henry>python -m timeit -s "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2','3']*10**5" "map(lambda x, y: x + y, List1, List2)" 10 loops, best of 3: 44 msec per loop C:\Users\Henry>python -m timeit -s "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "[x + y for x, y in zip(List1, List2)]" 10 loops, best of 3: 44 msec per loop C:\Users\Henry>python -m timeit -s "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "map(''.join,zip(List1,List2))" 10 loops, best of 3: 42.6 msec per loop C:\Users\Henry>python -m timeit -s "from operator import add" "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "map(add, List1, List2)" 10 loops, best of 3: 28.6 msec per loop
使用izip而不是zip
Microsoft Windows [Version 6.2.9200] (c) 2012 Microsoft Corporation. All rights reserved. C:\Users\Henry>python -m timeit -s "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2','3']*10**5" "map(lambda x, y: x + y, List1, List2)" 10 loops, best of 3: 44.1 msec per loop C:\Users\Henry>python -m timeit -s "from itertools import izip" "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "[x + y for x, y in izip(List1, List2)]" 10 loops, best of 3: 31.3 msec per loop C:\Users\Henry>python -m timeit -s "from itertools import izip" "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "map(''.join,izip(List1,List2))" 10 loops, best of 3: 36.2 msec per loop C:\Users\Henry>python -m timeit -s "from operator import add" "List1 = ['A', 'B', 'C']*10**5; List2 = ['1', '2', '3']*10**5" "map(add, List1, List2)" 10 loops, best of 3: 28.6 msec per loop
>>> List1 = ['A', 'B', 'C'] >>> List2 = ['1', '2', '3'] >>> [x + y for x, y in zip(List1, List2)] ['A1', 'B2', 'C3']
>>> List1 = ['A', 'B', 'C'] >>> List2 = ['1', '2', '3'] >>> map(lambda a, b: a + b, List1, List2) ['A1', 'B2', 'C3']
说明:
回报
每个元组都会重复压缩列表中与索引
N
关联的元素。我们想把每个元组中的元素组合成一个字符串。对于一个元组,我们可以:为了产生所需的结果,从而获得所有所需字符串的列表,我们将这个
join
函数映射到所有元组,如下所示:导致
所以如果你只想添加
List1
和List2
一些时间:
使用izip而不是zip
相关问题 更多 >
编程相关推荐