我现在有了:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
我希望有:
[1, 2, 3]
+ + +
[4, 5, 6]
|| || ||
[5, 7, 9]
简单地按元素添加两个列表。
我当然可以迭代这两个列表,但我不想那样做。
这样做 最符合 Pythonic 的方式 是什么?
原文由 Sibbs Gambling 发布,翻译遵循 CC BY-SA 4.0 许可协议
我现在有了:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
我希望有:
[1, 2, 3]
+ + +
[4, 5, 6]
|| || ||
[5, 7, 9]
简单地按元素添加两个列表。
我当然可以迭代这两个列表,但我不想那样做。
这样做 最符合 Pythonic 的方式 是什么?
原文由 Sibbs Gambling 发布,翻译遵循 CC BY-SA 4.0 许可协议
其他人给出了如何在纯 python 中执行此操作的示例。如果你想对包含 100.000 个元素的数组执行此操作,你应该使用 numpy:
In [1]: import numpy as np
In [2]: vector1 = np.array([1, 2, 3])
In [3]: vector2 = np.array([4, 5, 6])
进行逐元素加法现在就像
In [4]: sum_vector = vector1 + vector2
In [5]: print sum_vector
[5 7 9]
就像在 Matlab 中一样。
与 Ashwini 最快版本比较的时机:
In [16]: from operator import add
In [17]: n = 10**5
In [18]: vector2 = np.tile([4,5,6], n)
In [19]: vector1 = np.tile([1,2,3], n)
In [20]: list1 = [1,2,3]*n
In [21]: list2 = [4,5,6]*n
In [22]: timeit map(add, list1, list2)
10 loops, best of 3: 26.9 ms per loop
In [23]: timeit vector1 + vector2
1000 loops, best of 3: 1.06 ms per loop
所以这快了 25 倍!但是使用适合您情况的东西。对于一个简单的程序,您可能不想安装 numpy,因此请使用标准 python(我发现 Henry 的版本 是最 Pythonic 的)。如果您正在认真处理数字,让 numpy
完成繁重的工作。对于速度怪胎:似乎 numpy 解决方案从 n = 8
开始更快。
原文由 Bas Swinckels 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答987 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
使用
map
与operator.add
:或
zip
具有列表理解:时序比较: