如何在python中相互列出列表中的每个数字?

时间:2015-09-16 02:00:00

标签: python

所以,我有一个数字列表:

list = [4,5,65,94,3]

此循环将列表中的第一个数字与列表中的每个数字相加:

for i in list:
    sum = i + list[0]

如何移动到列表中的下一个项目,以便我的循环将该列表中的每个数字相加?

3 个答案:

答案 0 :(得分:2)

所以,这里有两个误解。

首先,该循环并不是你所描述的。如果sum在其外部定义,则在循环之后添加的唯一值将是列表中的最后一个元素以及列表的第一个位置。对于您当前的列表,总和将为7。

其次,已经有了一个方便的功能 - sum - 这可以简化你的工作。

sum([4,5,65,94,3])

但如果你坚持自己这样做,你必须设置一些东西:

  • 确保您累积的变量是数学运算的标记值。另外,它必须从0开始。对于乘法,它从1开始。
  • 添加原始值;不要覆盖它的价值。这意味着total = total + itotal += i
  • 请记住,Python的for循环实际上是for-each循环。 i将在您的列表中前进,并依次绑定到每个值。

要修复代码,您需要执行此操作:

total = 0
li = [4,5,65,94,3]
for i in li:
    total += i

作为最后一点,避免遮蔽函数名称。 listsum已被定义为函数,你真的不想去遮蔽它们

答案 1 :(得分:0)

不完全确定你在尝试什么。要在python中找到列表的总和,您只需要这样做:

for i in li:
    total += i

您目前正在做的是将每次迭代的sum值更改为等于i加上列表的第一个元素。这将使你的和在循环结束时等于7,因为它将最后一个元素(3)与第一个元素(4)相加。

或者,python有一个内置函数来对列表中的数字求和,这样你的代码可以简化为:

li = [4,5,65,94,3]
total = sum(li)

编辑:正如其他人所指出的那样,避免将变量命名为与函数相同。

答案 2 :(得分:0)

或者,如果您确实想要使用索引进行迭代,可以使用像

这样的范围函数来实现
  

for i in range(len(list)):