Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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:列表列表的getter和setter_Python - Fatal编程技术网

Python:列表列表的getter和setter

Python:列表列表的getter和setter,python,Python,下面的代码 def set_item(myMap, x, y, elem): myMap[x][y] = elem return myMap def get_item(myMap, x, y): item = myMap[x][y] return item myMap = [[".",".",".",".",".",".",".&

下面的代码

def set_item(myMap, x, y, elem):
    myMap[x][y] = elem
    return myMap


def get_item(myMap, x, y):
    item = myMap[x][y]
    return item

myMap = [[".",".",".",".",".",".",".",".",".","."],["#","#","#",".",".",".",".",".",".","."],[".","#","#","#",".",".",".",".",".","."],[".",".","#","#","#",".",".",".",".","."]]
print(set_item(myMap,0,6,"#"))
print(get_item(myMap,2,3)

不执行任何操作,有时返回错误。我希望能够从映射(列表列表)中轻松设置和获取单个值。

您的函数工作正常。插入单词“new”时,请参见下面的前后列表。不过,为了改进代码,请注意setter函数通常不会返回任何内容。它们只是为变量设置值,或者在本例中,对列表进行变异。当您开始编写类时,这将变得更加明显。现在,只需从setter函数中删除return语句。它的工作原理如下:

def set_item(myMap, x, y, elem):
    myMap[x][y] = elem

def get_item(myMap, x, y):
    item = myMap[x][y]
    return item

myMap = [[".",".",".",".",".",".",".",".",".","."],["#","#","#",".",".",".",".",".",".","."],[".","#","#","#",".",".",".",".",".","."],[".",".","#","#","#",".",".",".",".","."]]

print(f'Original:\n{myMap}')
set_item(myMap,0,6,"new")

print(f'final:\n{myMap}')
print(f'Item at (2,3): {get_item(myMap,2,3)}')

#output:
Original:
[['.', '.', '.', '.', '.', '.', '.', '.', '.', '.'], ['#', '#', '#', '.', '.', '.', '.', '.', '.', '.'], ['.', '#', '#', '#', '.', '.', '.', '.', '.', '.'], ['.', '.', '#', '#', '#', '.', '.', '.', '.', '.']]
final:
[['.', '.', '.', '.', '.', '.', 'new', '.', '.', '.'], ['#', '#', '#', '.', '.', '.', '.', '.', '.', '.'], ['.', '#', '#', '#', '.', '.', '.', '.', '.', '.'], ['.', '.', '#', '#', '#', '.', '.', '.', '.', '.']]
Item at (2,3): #

除了上一条指令遗漏了一个闭括号并抛出一个
SyntaxError
,我没有看到代码中有任何错误

但是,您没有在函数中捕捉到
索引器
(超出范围),因此在调用它们时应该小心
x
y
,并记住列表是从0索引的,这是一个非常常见的疏忽错误


如果你没有把
myMap
和一些不同的数据类型搞砸,你应该能够在任何环境中安全地运行这些代码。

你说的“什么都不做”是什么意思?您是否没有得到任何输出,没有错误,或者只是没有更新列表中的元素?@B
myMap
是一个本地函数参数。全局变量和参数具有相同的名称这一事实与此无关。代码运行良好,达到了预期的结果。你得到了什么样的输出?它与你期望的有什么不同?@The.B与OP的帖子也不相关。它应该在任何python环境中运行相同的内容。我认为更可能的是,与您在spyder中运行的代码有一些被忽略的小差异。