在python列表中编辑元素

在python列表中编辑元素,python,list,Python,List,我有一个函数,可以把一个2d列表拆分成4个更小的列表。问题是我得到的是网格每个角的一个副本,而不是实际的网格 def split(grid): tLeft = [row[0:len(grid) / 2 + 1] for row in grid[0:len(grid)/ 2 + 1]] tRight = [row[len(grid) / 2:] for row in grid[0:len(grid)/ 2 + 1]] bLeft = [row[0:len(grid) / 2

我有一个函数,可以把一个2d列表拆分成4个更小的列表。问题是我得到的是网格每个角的一个副本,而不是实际的网格

def split(grid):
    tLeft = [row[0:len(grid) / 2 + 1] for row in grid[0:len(grid)/ 2 + 1]]
    tRight = [row[len(grid) / 2:] for row in grid[0:len(grid)/ 2 + 1]]
    bLeft = [row[0:len(grid) / 2 + 1] for row in grid[len(grid)/ 2:]]
    bRight = [row[len(grid) / 2:] for row in grid[len(grid)/ 2:]]
    return [tLeft, tRight, bLeft, bRight]
比如说,

a = [1, 2, 3, 4]
b = a[0]
b += 1
print a
输出:[1,2,3,4]

但我想要的是[2,2,3,4]

是否有一种方法可以将网格的每个角保存在变量中而不是获取它的副本?

b=a[0]
将值从
a[0]
复制到
b
。因此
b
独立于列表元素工作。如果现在递增
b
,则列表不会更改。如果要更改列表元素,必须更改列表元素:

a[0] += 1

a[0]+=1
应该可以做到这一点……您是否以特定的方式获得网格?MattDMo的解决方案适用于您的示例,但我认为它不能回答您的问题。你在思考指针,在C这样的语言中是很好的,但在Python这样的语言中却不是很好,因为Python没有这种意义上的指针。如果您没有将网格的实现作为一个列表,我建议您创建一个网格对象。然后,您可以在该类中有一个名为“getLeftUpperCorner”的方法,或者可以在值仍然“附加”到网格的情况下返回该部分网格中的值?