相关疑难解决方法(0)

如何在Python中“深度复制”二维列表而不导入

我目前有一个二维矩阵

matrix =    [['.', '.', '.', '.', '.', '.'], 
             ['.', '.', '.', '.', '.', '.'], 
             ['.', '.', '.', '.', '.', '.'], 
             ['.', '.', '.', 'O', 'O', 'O'], 
             ['.', '.', '.', 'O', '.', '.'],
             ['.', '.', '.', 'O', 'O', '.']]
Run Code Online (Sandbox Code Playgroud)

我已指定copy = matrix制作矩阵的副本。但是,我遇到了一个错误,当我修改 时copy[],它也会修改matrix[]. 我发现这是别名的副作用,我需要创建matrix[].

如何在不使用导入的情况下创建二维矩阵的深层副本?

python

0
推荐指数
1
解决办法
1548
查看次数

从列表的副本中删除时删除的列表元素

我创建了一个代码,用于在音乐列表 ( music_list) 中挑选随机音乐并将它们添加到music_queue. 当我执行这段代码时,所有的元素music_list都被删除了,我不明白为什么。

print("Music list lenght : " + str(len(music_list)))
if len(music_queue) == 0:
    tmp = music_list
    while len(tmp) > 0:
        music_queue.append(tmp.pop(randint(0,len(tmp) - 1)))
print("Music list lenght : " + str(len(music_list)))
Run Code Online (Sandbox Code Playgroud)

python python-3.x

0
推荐指数
1
解决办法
40
查看次数

当切片列表“副本”的值被覆盖时,原始列表不会改变。为什么?(Python)

我来自 R,正在尝试更好地掌握可变性。下面是代码,我认为我理解其中的前两部分(请参阅评论)。我不明白第三部分。

#1. Refering to same instance with two variable names
listOrig = [i for i in range(1001, 1011)]
listCopy = listOrig
listOrig[0]=999
listOrig == listCopy #Returns True, because both variable names actually refer
#to the same instance, ergo still containing the same values
listOrig[0] is listCopy[0] #Same instance 999, the id is also the same as a 
#consequence

#2. Refering to same part of original list through slicing
listSlice = listOrig[0:5] 
listOrig[0] is listSlice[0] #Returns True, analogous to above …
Run Code Online (Sandbox Code Playgroud)

python immutability python-3.x

0
推荐指数
1
解决办法
332
查看次数

在python中复制可变列表

如何不更改列表的值???

>>> a=range(0,5)
>>> b=10
>>> c=a
>>> c.append(b)
>>> c
[0, 1, 2, 3, 4, 10]
>>> a
[0, 1, 2, 3, 4, 10]
Run Code Online (Sandbox Code Playgroud)

直到今天我还不知道python中的列表是可变的!

python mutable

-1
推荐指数
1
解决办法
622
查看次数

在python中分配值,结果与预期不符

我有这个代码:

x = 'x'
y = []
y.append(x)
z = y
z.append('a')
x = 'X'

print "x:", x
print "y:", y
print "z:", z
Run Code Online (Sandbox Code Playgroud)

输出:

x: X
y: ['x', 'a']
z: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

我知道这是正确的输出,但我很难理解它产生的原因

y: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

代替

y: ['x']
Run Code Online (Sandbox Code Playgroud)

python variables reference

-1
推荐指数
1
解决办法
92
查看次数

如何在Python函数中传递变量?

如果我在Python 2.7中运行以下代码,我会为a和b打印[2.,2.,2.].为什么b与a一起变化?非常感谢!

def test_f(x):
    a = np.zeros(3)
    b = a
    for i in range(3):
        a[i] += x
    print a
    print b
    return 0

test_f(2)
Run Code Online (Sandbox Code Playgroud)

python variables

-1
推荐指数
1
解决办法
79
查看次数

Python创建具有相同值的新对象

我来自java世界,我期待以下事情

int a = valueassignedbyfunction();
int b = a;
a = a + 1; 
Run Code Online (Sandbox Code Playgroud)

在此之后a大于b.但是在python中,一旦a = a + 1操作完成,b就会自动增加1,因为这个b引用的是同一个对象.如何只复制a的值并将其分配给名为b的新对象?

谢谢!

python pass-by-value

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