相关疑难解决方法(0)

如何克隆或复制列表?

在Python中克隆或复制列表有哪些选项?

在使用时new_list = my_list,每次都会对new_list更改进行任何修改my_list.为什么是这样?

python clone copy list

2289
推荐指数
16
解决办法
149万
查看次数

列表更改意外地反映在子列表中

我需要在Python中创建一个列表列表,所以我输入以下内容:

myList = [[1] * 4] * 3
Run Code Online (Sandbox Code Playgroud)

列表看起来像这样:

[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]  
Run Code Online (Sandbox Code Playgroud)

然后我改变了最里面的一个值:

myList[0][0] = 5
Run Code Online (Sandbox Code Playgroud)

现在我的列表看起来像这样:

[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]  
Run Code Online (Sandbox Code Playgroud)

这不是我想要或期望的.有人可以解释一下发生了什么,以及如何解决这个问题?

python list mutable nested-lists

576
推荐指数
10
解决办法
3万
查看次数

List.append()将所有元素更改为附加项

我的Python迷宫生成程序似乎有问题.我正在尝试随机创建一个在选定点分支出来的路径,这些点随着它的存在而被存储起来.当迷宫到达死胡同时,它将通过测试最高值而不是弹出并转到下一个点来回溯通过被访问点,直到它到达不是死路的地方.但是,当我尝试将项目附加到列表中时,我用来保存我去过的空间,发生了一些奇怪的事情,我实际上从未见过它.这是代码,最好的方法是运行它直到它一直运行.我还没有真正找到解决死胡同问题的办法,所以如果有人也可以帮助我,那就太好了.

import random

width = 8

def check(x,y):
    """Figures out the directions that Gen can move while"""
    if x-1 == -1:
        maze[x][y][3] = 0 

    if x+1 == 8:
        maze[x][y][1] = 0

    if y+1 == 8:
        maze[x][y][2] = 0

    if y-1 == -1:
        maze[x][y][0] = 0

    if x + 1 in range(0,8) and visited[x+1][y] == False:
        maze[x][y][1] = 2

    if x - 1 in range(0,8) and visited[x-1][y] == False:
        maze[x][y][3] = 2

    if y + 1 in range(0,8) and visited[x][y+1] == …
Run Code Online (Sandbox Code Playgroud)

python maze list append

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

list ×3

python ×3

append ×1

clone ×1

copy ×1

maze ×1

mutable ×1

nested-lists ×1