Python 索引错误:列表分配索引超出范围
我想:Python 索引错误:列表分配索引超出范围,python,list,indexing,variable-assignment,Python,List,Indexing,Variable Assignment,我想: 将两个inputs作为整数,用空格分隔(但采用字符串形式) 使用A+B将其插入球杆 使用int()将此A+B转换为整数 将此整数值存储在列表中C 我的代码: 但它表明: 索引器:列表分配索引超出范围 我无法理解这个问题。a是如何超出范围的(它必须从0开始,在3结束) 为什么显示此错误?正确的方法是将元素附加到列表中,如下所示: C.append(int(A+B)) 不用担心索引,这里有一种编写代码的方式,比以前更为简洁: c = [] for _ in range(4): # defa
input
s作为整数,用空格分隔(但采用字符串形式)A+B
将其插入球杆int()
将此A+B
转换为整数列表中C
a
是如何超出范围的(它必须从0
开始,在3
结束)
为什么显示此错误?正确的方法是将元素附加到列表中,如下所示:
C.append(int(A+B))
不用担心索引,这里有一种编写代码的方式,比以前更为简洁:
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)]
发生错误的原因:
如果列表的索引已经存在,则只能引用该索引。在每次迭代的最后一行,您引用的是尚未创建的索引,因此,例如,在第一次迭代中,您试图更改索引0
,该索引不存在,因为列表当时为空。每次迭代都会发生同样的情况
将项目添加到列表中的正确方法如下:
C.append(int(A + B))
或者你可以用一个超Python的列表理解来解决很多行。这是基于您在循环中添加到列表
的事实,但这简化了它,因为您不需要显式地分配内容:
C = [sum(int(item) for item in input("Enter two space-separated numbers: ").split()) for i in range(4)]
上述内容将取代您在问题中发布的所有代码。请修复您帖子中的代码缩进。我不会否决投票,因为我一开始犯了同样的错误,但我将给您一个机会来纠正您无法获得列表中两个字符串之和的事实。它会引发一个TypeError
。
C = [sum(int(item) for item in input("Enter two space-separated numbers: ").split()) for i in range(4)]