1

假设我有一个数字列表,例如:

my_list = [1, 17, 2]

我想把它们加在一起。我知道我可以使用print(sum(my_list)). 但是我想看看是否有另一种方法,所以我尝试了以下方法:

b = len(my_list)
for m in range(my_list[0], my_list[b-1]):
    m += m
    print(m)

我确信这样的事情应该有效,但我显然做错了。这个的输出是2。在我尝试之后:

result = 0
b = len(my_list)
for m in range(my_list[0], my_list[b-1]):
    result = result + m
    print(result)

这输出1.

请解释我做错了什么以及如何纠正它。

4

6 回答 6

3

由于您使用范围函数定义 1 和 2 之间的范围。在 m 中生成的唯一数据是 1,因此结果是 1。

在 Python 中,您可以直接迭代序列的元素:

m = [1, 17, 2]
res = 0
for i in m:
    res += i
print res
于 2013-08-02T06:37:34.003 回答
2
from operator import add

my_list = [1, 17, 2]
result=reduce(add, my_list)
于 2013-08-02T06:42:43.553 回答
2

首先,您应该输入正确的范围: 0..2 在您的情况下(因为您的列表项的索引从 0 开始并且有 2 个项目)

  for i in range(0, b):
      result = result + my_list[i];

或者,如果您更喜欢“针对每种”样式,则应按要求和的列表进行迭代:

  for m in my_list:
      result = result + m;

最后,如果您只想打印最终总和,则应更正打印缩进:

  for m in my_list:
      result = result + m;

  print(result)  # <- mind indent

包起来:

  my_list = [1, 17, 2]

  result = 0

  for m in my_list:
      result = result + m;

  print(result)
于 2013-08-02T06:43:04.960 回答
0
import functools

print(functools.reduce(lambda x,y: x+y, my_list))
于 2013-08-02T06:39:13.647 回答
0

尝试这个

my_list = [1, 17, 2]
reduce(lambda x, y: x+y, my_list)
于 2013-08-02T06:39:55.810 回答
0

要从 my_list 获取值,您可以使用以下语法:

for m in my_list:
    print m

如果您使用范围,它将为您提供从 1(列表的第一个值)到 2(列表的长度 -1)的范围

要添加列表的值,您可以尝试以下代码:

out = 0
for m in my_list:
   out = out + m
print(out)
于 2013-08-02T06:53:07.340 回答