首先感谢各位关注我的问题,我是新手,问题浅薄,还请给位多包含。代码如下:s=["~abb","~bccc~","abc","123"]foriins:i=i.strip("~")printiprints输出结果如下:abbbcccabc123['~abb','~bccc~','abc','123']这里有个疑问,为什么循环操作没有对list发生作用?想了好久都没明白,我觉得是我对循环操作列表的理解有问题。谢谢。
2 回答
www说
TA贡献1775条经验 获得超8个赞
因为在你问题中的循环过程里,由于字符串是不可变对象(类型),因此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
TA贡献1860条经验 获得超9个赞
感谢大家的回复,我最终明白了问题其实是出在赋值上。以下是代码:s=["~abb","~bccc~","abc","123"]b=[i.strip("~")foriins]printb输出如下:['abb','bccc','abc','123']Processfinishedwithexitcode0
添加回答
举报
0/150
提交
取消