列表a =列表b vs列表a =列表b [:]

时间:2017-10-28 03:58:17

标签: python-2.7 list

aws ecr list-images --repository-name my_aws_ecr_repo
{
    "imageIds": [
        {
            "imageDigest": "sha256:c115230398..."
        },
        {
            "imageDigest": "sha256:236ce1ed44...",
            "imageTag": "latest"
        },
        {
            "imageDigest": "sha256:c1dd997eb7..."
        },
        {
            "imageDigest": "sha256:9f61b77c31..."
        }
    ]
}

我没有触及列表a中的数字,但它们仍然有所改变。为什么会这样? 此外,这似乎返回了预期的结果:

a = [1,2,3,4]
b = a
b[0] = 10
print a

有人可以告诉我[:]是什么以及为什么第一个代码改变了?

1 个答案:

答案 0 :(得分:1)

Python没有传统意义上的变量。当您使用let number = formattedNumber.replacingOccurrences(of: ",", with: "") let newNumber = Int(number)! * 2 创建内容时,您只需创建一个新的"标记" a指向该列表。

所以a = [1, 2, 3, 4]只是创建一个名为b的新标记,指向相同的列表。如果改变b,则改变a。

在您的第二个示例中,b = ab = a[:]是"切片"在这种情况下,列表将返回列表的所有值,因此b现在指向它自己的[1,2,3,4]副本,而不是副本。

如果你要做[:]这样的事情,你可以更好地了解切片操作符的作用。