VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1814|回复: 6

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

[复制链接]

3

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-3-23 19:00:01 | 显示全部楼层 |阅读模式
list=["jessinio","jason"]

for x in list:
   x = "non"


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


不解!!!!!!
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-7-3 14:30:02 | 显示全部楼层
for x in list:
   x = "non"

将list里面的值依次放进X, 之后你只是list里面的值的幅本的X, 所以并没有修改list的内容.

正确的代码应该这样
for x in range(len(list)):
    x= 0
print list

----------by 一个python菜菜.
回复

使用道具 举报

3

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-4 22:00:01 | 显示全部楼层
首先,感谢你回复我的问题。

其次,你的回复不能满足我的要求。
回复

使用道具 举报

0

主题

23

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-7-14 17:30:01 | 显示全部楼层
x = y
x = 1
改变y的值了吗?
x = 1
x = 2
改变1的值了吗?
回复

使用道具 举报

3

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-15 10:00:01 | 显示全部楼层
python存在了不可变变量后,还真难理解。

楼上的高手说的:

x = 1
x = 2
改变1的值了吗?

是不是想list里面的成员是不可变变量呢?

如果是这样的话,怎么使用一个循环语言修改一个容器的全部成员??
回复

使用道具 举报

0

主题

23

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-7-16 10:45:01 | 显示全部楼层
for x in list:
>>>x = "non"

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

在C里面可以这样理解:

const char* list[] = {"apple9927", "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

回复

使用道具 举报

3

主题

13

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-7-16 16:15:01 | 显示全部楼层

谢谢,我要好好感受一下这个指向~!~!~!~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表