索引错误:列表分配索引超出范围

时间:2014-03-15 20:47:33

标签: python list indexing variable-assignment

我想:

  1. 将两个input作为由空格分隔的整数(但以字符串形式)。
  2. 使用A + B
  3. 与他们联系
  4. 使用A + B将此int()转换为整数。
  5. 将此整数值存储在list C
  6. 我的代码:

    C = list()
    for a in range(0, 4):
        A, B = input().split()
        C[a] = int(A + B)
    

    但它显示:

      

    IndexError:列表分配索引超出范围

    我无法理解这个问题。 a如何离开range(它必须从0开始3开始)?

    为什么会显示此错误?

3 个答案:

答案 0 :(得分:1)

为什么发生错误:

  

如果index已存在list,则只能引用index。在每次迭代的最后一行,您指的是尚未创建的索引,例如,在第一次迭代中,您尝试更改 0 list ,由于当时C.append(int(A + B)) 为空,因此不存在。每次迭代都会发生同样的情况。


将项目添加到列表的正确方法是:

list

或者你可以用超pythonic列表理解来解决很多线条。这是基于您在循环中添加到C = [sum(int(item) for item in input("Enter two space-separated numbers: ").split()) for i in range(4)] 的事实,但这简化了它,因为您不需要明确地分配内容:

{{1}}

以上内容将取代您在问题中发布的所有代码。

答案 1 :(得分:0)

正确的方法是将元素附加到列表中,如下所示:

C.append(int(A+B))

并且不要担心指数

答案 2 :(得分:0)

这是编写代码的更加pythonic方式:

c = []
for _ in range(4): # defaults to starting at 0
    c.append(sum(int(i) for i in input("Enter two space-separated numbers").split()))

或者一个漂亮的小单行:

c = [sum(int(i) for i in input("Enter two space-separated numbers").split()) for _ in range(4)]