猿问

关于python 中for 循环操作列表的一个新手疑问

首先感谢各位关注我的问题,我是新手,问题浅薄,还请给位多包含。
代码如下:
s=["~abb","~bccc~","abc","123"]
foriins:
i=i.strip("~")
printi
prints
输出结果如下:abbbcccabc123['~abb','~bccc~','abc','123']
这里有个疑问,为什么循环操作没有对list发生作用?想了好久都没明白,我觉得是我对循环操作列表的理解有问题。
谢谢。
神不在的星期二
浏览 381回答 2
2回答

www说

因为在你问题中的循环过程里,由于字符串是不可变对象(类型),因此i并没有引用列表每个元素的地址,只是重新生成了一个新变量i,所以更改i的过程实际上相当于:i=s[0]i=i.strip('~')此时list仍然是原来的list。如果我们的列表中有可变对象(类型),譬如:l=[[1,2],2]i=l[0]i.append(3)此时输出列表l的结果就是:[[1,2,3],2]你自己回答的列表生成式是一种很高效的方法,如果一定要用for的话,我这里给你写一个:forindex,eachinenumerate(lst):lst[index]=each.strip('~')

慕码人2483693

感谢大家的回复,我最终明白了问题其实是出在赋值上。以下是代码:s=["~abb","~bccc~","abc","123"]b=[i.strip("~")foriins]printb输出如下:['abb','bccc','abc','123']Processfinishedwithexitcode0
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答