Python 如何是';列表索引超出范围';?
执行此代码显示:Python 如何是';列表索引超出范围';?,python,Python,执行此代码显示:列表索引超出范围 x= int(input("Enter the row number")) y= int(input("Enter the column number")) s= [] for i in range(1,x): for j in range(1,y): s[i][j]= i*j print s 请注意,我在编程方面是一个完全的业余爱好者,因此无法在基本任务上帮助自己。谢谢 您面临的困难是无法通过分配给不存在的元素来扩展列表 你可
列表索引超出范围
x= int(input("Enter the row number"))
y= int(input("Enter the column number"))
s= []
for i in range(1,x):
for j in range(1,y):
s[i][j]= i*j
print s
请注意,我在编程方面是一个完全的业余爱好者,因此无法在基本任务上帮助自己。谢谢 您面临的困难是无法通过分配给不存在的元素来扩展列表 你可以使用字典做你想做的事情,就像这样,因为有了字典,你可以通过分配新元素来创造新元素:
s= {}
for i in range(1,x):
for j in range(1,y):
s[i,j]= i*j
但是如果你真的想要一个列表列表,你必须使用append()
建立每个列表。使用x,y==(4,5)
:
这并不能完全实现原始代码的目的,因为Python列表是基于零的,并且您希望最低的x和y索引为1。所以
>>> s[2][3]
12
使用x,y==(4,5)
您可能期望该矩阵包含20个元素,而不是12个元素。得到12的原因是range(1,n)
生成的元素序列最多为n,但不包括n
如果您真的是在Python 3中编程,那么您需要编写print
,因为在Python 3中,print
是一个函数而不是一个语句。您已经将数组s
初始化为空,因为任何赋值都会给您一个超出范围的错误。对于数字数组,可以使用以下方法对其进行初始化:
x = int(input("Enter the row number: "))
y = int(input("Enter the column number: "))
s = [[0] * y for _ in range(x)]
for i in range(x):
for j in range(y):
s[i][j] = i * j
print s
例如:
Enter the row number: 5
Enter the column number: 3
[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6], [0, 4, 8]]
注意:Python中的数组以[0][0]
开头,因此最后一个位置是s[4][2]
,其中包含2*4
。例如,您可以在x
和y
中添加一个元素,以获得额外的维度。因为您得到了空列表s=[]
sou,如果i-th元素不存在,您就不能请求它。您使用了Python 3标记,但您的代码使用了Python 2print
语法。它是哪一个?我建议您浏览一个像样的Python教程()的列表部分。它是Python3。感谢您指出@glibdud如果您找到一个教程并按照自己的方式学习,您实际上可以帮助自己完成基本任务。我们不是辅导服务,这很有帮助。谢谢。
Enter the row number: 5
Enter the column number: 3
[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6], [0, 4, 8]]