我有一个清单:
mylist = [0.01, 0.09, 0.04, 0.16]
Run Code Online (Sandbox Code Playgroud)
我想每两个元素取总和,所以我的结果将是:
[0.1, 0.2]
我想到了这个解决方案:
chunks = [mylist[i:i + 2] for i in range(0, len(mylist), 2)]
temp = []
for i in chunks:
s = 0
for j in i:
s += j
temp.append(s)
print(temp)
Run Code Online (Sandbox Code Playgroud)
[0.1, 0.2]
但我想知道是否有一个更好的解决方案,避免2 for循环.
为什么不简单地使用sum(..)内置:
temp = [sum(mylist[i:i+2]) for i in range(0, len(mylist), 2)]Run Code Online (Sandbox Code Playgroud)
这是一个单线,显然更像Pythonic.此外,它可能更有效,因为在这里你不会先将所有切片存储到内存中,等等,但你直接计算总和.
有些人可能认为它有点大材小用,但是一旦你开始对数字数组进行计算,numpy 就是你的朋友。它使您能够以可读且高效的方式进行此类计算。
import numpy as np
x = np.array([0.01, 0.09, 0.04, 0.16])
# reshaping the array to a 2D array, and summing over the columns
x.reshape((x.shape[0]/2,2)).sum(axis=1)
Run Code Online (Sandbox Code Playgroud)