Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改数组的一部分_Python_Arrays_Assign - Fatal编程技术网

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)]