为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2019-04-19 16:29:21
首先感谢各位关注我的问题,我是新手,问题浅薄,还请给位多包含。代码如下: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('~')
                            
查看完整回答
反对 回复 2019-04-19
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

感谢大家的回复,我最终明白了问题其实是出在赋值上。
以下是代码:
s=["~abb","~bccc~","abc","123"]
b=[i.strip("~")foriins]
printb
输出如下:['abb','bccc','abc','123']
Processfinishedwithexitcode0
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 380 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信