读书人

list是可变容器为什么这样不能修改它

发布时间: 2012-03-15 11:50:38 作者: rapoo

list是可变容器,为什么这样不能修改它的值??
list=[ "jessinio ", "jason "]

for x in list:
x = "non "


print(list)还是:
[ 'jessinio ', 'jason ']


不解!!!!!!


[解决办法]
for x in list:
> > > x = "non "

每次循环的时候,开始x只是和list里面的一个位置指向了相同的东西,稍后x又指向了 "non "。而list中原来的位置依旧指向原来的对象,list一直作为右值使用而已。

在C里面可以这样理解:

const char* list[] = { "jessinio ", "jason "};
const char* x;
int i;
for(int i=0; i <2; i++)
{
x = list[i];
x = "non ";
}

没有任何操作修改了list(list没有作为左值使用);


你想修改list的话可以使用索引:
w = [ "int ", "str "]

for i in range(len(w)):
w[i] = "none "

print w

读书人网 >perl python

热点推荐