为什么我的索引变量不能正确地迭代列表?

时间:2019-06-03 17:41:31

标签: python list indexing

我写了一小段代码来遍历列表并汇总内容(我知道有一个内置函数,但出于好奇而想这样做)。

list = [14, 42, 100, 15, 8, 16, 104, 8, 41, 5, 15, 10]    
index = 1
result = list[0]
for range in (0, len(list)):
    result = result + list[index]
    index = index + 1
print(result)

由于某种原因,索引变量将迭代直到“ 3”并停止。感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

为什么?

因为for range in (0, len(list))只会迭代 两次:

  1. 值为0。
  2. len(list)为12。

因此,您最终只在列表中添加了前3个元素。

# Wrong code
result = list[0]
for range in (0, len(list)):
    result = result + list[index]
    index = index + 1

# 14 + 42 + 100 = 156

更正

lst = [14, 42, 100, 15, 8, 16, 104, 8, 41, 5, 15, 10]

result = 0    
for i in range(len(lst)):
    result = result + lst[i]

print(result)

更多 Python

lst = [14, 42, 100, 15, 8, 16, 104, 8, 41, 5, 15, 10]

result = 0    
for x in lst:
    result += x

print(result)

缩影

sum(lst)

注意-

没有名字:

  • 您的列表为list,因为它遮盖了内置list

  • 您的变量为range,因为它隐藏了内置的range

答案 1 :(得分:1)

这真的很基础。

summ = 0
for i in range(len(list)):
    summ += list[i]

您的for循环完全不正确。您用两个元素遍历元组的元素,再加上一个加总到三个...

答案 2 :(得分:0)

您正在遍历具有两个元素0len(list)的元组。 您应该使用范围,以获取从0到len(list)的所有数字的范围:

result = list[0]
for index in range(1, len(list)):
    result = result + list[index]

但是您应该直接遍历列表的元素:

numbers = [14, 42, 100, 15, 8, 16, 104, 8, 41, 5, 15, 10]    
result = 0
for number in numbers:
    result += number

答案 3 :(得分:0)

替代解决方案:当您想同时获取每个元素的索引和值时,一种更优雅的解决方案是使用enumerate()。这避免了我们担心len和增加索引

注意:虽然我们没有使用下面的索引

lst = [14, 42, 100, 15, 8, 16, 104, 8, 41, 5, 15, 10]

result = 0    
for i, num in enumerate(lst):
    result += num

print(result)