为什么剂量python在“ 1维”列表和“ 2维”列表之间的行为有所不同

时间:2018-12-03 16:25:25

标签: python

val = [[4, 5, 6, 5], [4, 5, 5, 8, 9]]
a ,b = [], []
for i in val:
    a = i
    b = i
    print a 
    print b
    a[2] = 19
    print a
    print b
    break

运行此代码时,即使我刚刚更改了a [2],b [2]也将被更改。 结果将是:

[4, 5, 6, 5]
[4, 5, 6, 5]
[4, 5, 19, 5]
[4, 5, 19, 5]

运行此代码时将与预期的一样:

val = [4, 5, 6, 5]
a ,b = [], []
for i in val:
    a = i
    b = i
    print a
    print b
    a = 19
    print a
    print b
    break

结果是:

4
4
19
4

这仅在矩阵中发生!我可以使它起作用的唯一方法是使用铸造。 有什么正常的解释吗?

1 个答案:

答案 0 :(得分:0)

尝试通过这种方式进行操作:

    val = [[4, 5, 6, 5], [4, 5, 5, 8, 9]]
    a = val[0]
    b = val[1]
    print a 
    print b
    a[2] = 19
    print a
    print b

您根本不需要for循环,而这实际上是使您烦恼的原因。您正在做的是遍历整个数组,使a和b相同。