我查看了有关类似问题的答案,但无法弄清楚我的问题。我是python的新手,请帮助。
length = 13
breadth = 24
sheet = [ [ 0 for y in range( length ) ] for x in range( breadth ) ]
sheet[length-2][breadth-3] = 1
上面的代码为我提供了列表分配索引超出范围错误。
答案 0 :(得分:1)
你有list-comprehension
错误的方法,它应该是:
length = 13
breadth = 24
sheet = [ [ 0 for x in range( breadth ) ] for y in range( length ) ]
sheet[length-2][breadth-3] = 1
或者您对sheet
list
的索引编号错误,应该是:
length = 13
breadth = 24
sheet = [ [ 0 for x in range( length ) ] for y in range( breadth ) ]
sheet[breadth-2][length-3] = 1
这两项更正都可以正常使用,但这取决于您定义breadth
和width
的内容。
在第一个示例中,list
看起来像:
#breadth --->
[[0,0 .... 0,0], #width |
... # |
[0,0 .... 0,0], # \/
]
有width
行breadth
在第二个:
#width --->
[[0,0 .... 0,0], #breadth |
... # |
[0,0 .... 0,0], # \/
]
有breadth
行width
答案 1 :(得分:1)
您将轴混合在一起,尝试使用
sheet[breadth-3][length-2] = 1
或者,您可以使用numpy
更优雅地执行此操作:
import numpy as np
breadth = 5
length = 3
sheet = np.zeros(shape=(breadth, length))
sheet[breadth-3, length-2] = 1
sheet.shape
>>> (5, 3)
sheet
>>> array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])