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

时间:2018-06-13 12:26:40

标签: 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]
...

......等等

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

4 个答案:

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