我在列表中有项目。这些项目的数量取决于用户输入。我试图做的是在前两个项目上做一个等式(等式本身并不重要,它会产生结果)。然后使用这个等式的结果作为"第一个"下一个等式的元素,但下一个元素等到列表的末尾。最简单的方法是什么?
示例:
list = [1,2,3,4,5]
a = list[0]
b = list[1]
result = a + b
这里问题开始了:
result = result + list[2]
result = result + list[3]
...
......等等
我知道我可以通过索引访问列表中的每个元素,但如何在没有特定索引的情况下浏览整个列表?
答案 0 :(得分:0)
这应该可以解决问题:
const newData = data.map((item, key) => ({
...item,
owner: arrayOwner[key],
others: arrayOthers[key],
}));
更接近这个的方法是使用sum(arr):
l = [1,2,3,4,5]
result = 0
for val in l:
result += val
答案 1 :(得分:0)
在python中,你可以迭代一个列表,基本上编码“对于这个列表中的每个变量,做一些事情”。
您可以使用for / in
来完成for item in list:
# do something
要解决您的示例,您必须将'item'添加到变量的值。
list = [1, 2, 3, 4, 5]
sum = 0
for x in list:
sum = sum + x
# Or, you just do sum += x
print (sum) # To show your result.
答案 2 :(得分:0)
您可能正在寻找functools.reduce
。
>>> from functools import reduce
>>> def my_add(a, b):
... return a + b
...
>>> lst = [1,2,3,4,5] # don't use "list" as a variable name, you'll mask the builtin
>>> reduce(my_add, lst)
15
当然,对于这种特定情况,这是不必要的,因为我们有sum
...
>>> sum(lst)
15
...但如果您想累积应用通用双参数函数,请考虑reduce
。
答案 3 :(得分:0)
我确信您期待递归解决方案:
def recursive_sum(lst):
n = len(lst)
if n == 0:
return 0
else:
return lst[0] + recursive_sum(lst[1:])
lst = [1,2,3,4,5]
print(recursive_sum(lst))
# 15
这个递归找到结果。但是,与简单的循环相比,性能相当低,后者完全相同:
lst = [1,2,3,4,5]
result = 0
for x in lst:
result += x
# 15
甚至更短的方式,你可以使用:
sum(lst)