Python 在列表中的特定元素上建立一个等式,然后使用结果与下一个元素建立一个等式?

Python 在列表中的特定元素上建立一个等式,然后使用结果与下一个元素建立一个等式?,python,python-3.x,Python,Python 3.x,我有一个列表中的项目。这些项目的数量取决于用户输入。我想做的是在前两项上建立一个方程(方程本身在这里并不重要,它会产生结果)。然后将这个方程的结果作为下一个方程的“第一个”元素,但与下一个元素等一起使用到列表的末尾。最简单的方法是什么 例如: list = [1,2,3,4,5] a = list[0] b = list[1] result = a + b 问题从这里开始: result = result + list[2] result = result + list[3] ... 。。

我有一个列表中的项目。这些项目的数量取决于用户输入。我想做的是在前两项上建立一个方程(方程本身在这里并不重要,它会产生结果)。然后将这个方程的结果作为下一个方程的“第一个”元素,但与下一个元素等一起使用到列表的末尾。最简单的方法是什么

例如:

list = [1,2,3,4,5]
a = list[0]
b = list[1]
result = a + b
问题从这里开始:

result = result + list[2] 
result = result + list[3]
...
。。。等等


我知道我可以通过索引访问列表中的每个元素,但如何让它在没有特定索引的情况下遍历整个列表?

这应该可以解决问题:

l = [1,2,3,4,5]
result = 0
for val in l:
  result += val
更简短的方法是使用总和(arr):


在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.

您可能正在寻找
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

。。。但是如果你想应用一个泛型的两个参数函数,考虑<代码>减少< /C> > < /P> < P>我相信你在期待一个递归的解决方案:

>>> 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
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)

输入/输出后示例。对于这样简单的计算,递归解决方案的可能重复通常在性能上是不好的,因为调用堆栈与列表项的数量成线性增加,在列表项的数量上,一个简单的循环可以解决问题。@LukasBach我想我已经在回答中包含了你的观点。谢谢