Python 如何更改数组的一部分
我有一个数组:Python 如何更改数组的一部分,python,arrays,assign,Python,Arrays,Assign,我有一个数组:table=[[1代表范围内的x(1101)]代表范围内的x(1101)] 现在我想将一些元素设置为0。当然,我可以遍历该表并选择要修改的元素,但如果我要修改10000个元素中的25个元素,这就没有多大意义了。这是我的代码: left = randint(1,100) table[left+1:left+3][left+1:left+3] = [[ 0 for x in range(1,3)] for x in range(1, 3)] 但是,当我对数组中的所有单元格求和时: s
table=[[1代表范围内的x(1101)]代表范围内的x(1101)]
现在我想将一些元素设置为0。当然,我可以遍历该表并选择要修改的元素,但如果我要修改10000个元素中的25个元素,这就没有多大意义了。这是我的代码:
left = randint(1,100)
table[left+1:left+3][left+1:left+3] = [[ 0 for x in range(1,3)] for x in range(1, 3)]
但是,当我对数组中的所有单元格求和时:
sum(map(sum, table))
我得到一万
这项援助有什么问题?正确的做法是什么
我在Windows上使用Python2.7和PyCharm
为什么会出现以下情况:
print len(table[left-1:left+6][upper-1:upper+6])
打印出0?您有列表100x100,
按这条线
table[left+1:left+3]
您从左+1到左+3选择列表,因此结果将是列表2x100。
因此,如果变量left
大于1,此行将尝试将列表移出范围:
table[left+1:left+3][left+1:left+3]
结果可能是:
[]
例如:
table = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]
因此,结果如下:
table[2:4]
是
如果您试图从该列表中获取范围[2:4],您将什么也得不到,因为它只包含两个列表:
[]
/编辑:从不支持代码格式的注释中移动:
回答标题问题。我认为比较好的解决办法是:
for row in table[left:left+5]:
row[right:right+5] = [0 for x in range(5)]
仅供参考,python中没有数组。你说的是列表。@Lafexlos,谢谢。但这真的没关系。当我将列表的部分设置为0时,它仍然不起作用。谢谢,这是合乎逻辑的:)
for row in table[left:left+5]:
row[right:right+5] = [0 for x in range(5)]