对赋值运算符的工作原理感到困惑

时间:2016-11-10 21:11:35

标签: python python-2.7

有一些关于python为变量赋值的方式,我并不完全理解。为什么会这样:

x = [
    "accessible",
    "air conditioning",
    "dishwasher",
    "garage", 
];

$('div.whitelist-searchable-amenity input[type=checkbox]').each(function(){
    if(x.indexOf(this.value) > -1)
    {
      alert("copy here");
    }
});

给了我这个:

charlie = ['d', 'o', 'p', 'e']
beth = charlie
beth[0] = charlie[1]
print charlie

据我所知,赋值运算符只能以一种方式工作,因此这段代码应该只改变beth的第一个索引,而不是charlie。那是什么给出了什么?

2 个答案:

答案 0 :(得分:1)

当您说beth = charlie时,beth现在是charlie的别名。这意味着beth现在发生的任何事情都发生在charlie

http://gestaltrevision.be/wiki/python/aliases

为了避免这种情况发生,您可以尝试beth = list(charlie)beth = charlie[:]

答案 1 :(得分:0)

您刚刚为两个变量分配了相同的列表,因此charliebeth是同一个对象。