【问题标题】:Changing list of list values in place in python在python中更改列表值列表
【发布时间】:2014-05-25 03:35:15
【问题描述】:

我正在尝试追踪 pacman 穿过迷宫的路径。迷宫位于列表列表中。我有一个(基本上)pacman 穿过迷宫的路径的链接列表。当我遍历列表时,我想将链表上的每个值更改为'*'。我不断收到错误TypeError: 'str' object does not support item assignment,经过一番研究,我发现数组是不可变的而且我每次都必须重写数组或附加到它。有没有一种简单的方法可以让我在 python 中做到这一点?
这是我到目前为止的代码:

while(pacman_r != originalR or pacman_c != originalC):
    i = i + 1
    path.append([pacman_r, pacman_c])
    grid[pacman_r][pacman_c] = '*'
    pacman_r = cellGrid[pacman_r][pacman_c].parentx
    pacman_c = cellGrid[pacman_r][pacman_c].parenty

我的第 4 行有问题。

【问题讨论】:

  • 在前一行做print grid[pacman_r][pacman_c],看看为什么会出现这个错误...

标签: python list linked-list


【解决方案1】:

这不起作用的原因是因为您试图就地编辑 str 对象(在 python 中是不可变的)。相反,您可以将整个事物重新分配给有意义的事物,如下所示:

grid[pacman_r] = grid[pacman_r][:pacman_c] + '*' + grid[pacman_r][pacman_c+1:]

我没有对此进行测试,但是将列表分配给另一个列表应该可以。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2019-06-04
    • 2016-06-28
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    相关资源
    最近更新 更多