扫码关注官方订阅号
因为在你问题中的循环过程里,由于字符串是不可变对象(类型),因此i并没有引用列表每个元素的地址,只是重新生成了一个新变量i,所以更改i的过程实际上相当于:
不可变对象(类型)
i
i = s[0] i = i.strip('~')
此时list仍然是原来的list。
如果我们的列表中有可变对象(类型),譬如:
可变对象(类型)
l = [[1, 2] ,2] i = l[0] i.append(3)
此时输出列表l的结果就是:
l
[[1, 2, 3], 2]
你自己回答的列表生成式是一种很高效的方法,如果一定要用for的话,我这里给你写一个:
for index, each in enumerate(lst): lst[index] = each.strip('~')
感谢大家的回复,我最终明白了问题其实是出在赋值上。
以下是代码:
s = ["~abb","~bccc~","abc","123"] b = [i.strip("~") for i in s] print b
输出如下:['abb', 'bccc', 'abc', '123']
Process finished with exit code 0
你的问题跟这个帖子里的问题一样,请详细看依云的回答。故不再贴了
如果要实现你的逻辑,改成这样:
s = ["~abb","~bccc~","abc","123"] for i,a in enumerate(s): s[i] = a.strip("~") print(a) print(s)
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
因为在你问题中的循环过程里,由于字符串是
不可变对象(类型),因此i并没有引用列表每个元素的地址,只是重新生成了一个新变量i,所以更改i的过程实际上相当于:此时list仍然是原来的list。
如果我们的列表中有
可变对象(类型),譬如:此时输出列表
l的结果就是:你自己回答的列表生成式是一种很高效的方法,如果一定要用for的话,我这里给你写一个:
感谢大家的回复,我最终明白了问题其实是出在赋值上。
以下是代码:
输出如下:
['abb', 'bccc', 'abc', '123']
Process finished with exit code 0
你的问题跟这个帖子里的问题一样,请详细看依云的回答。故不再贴了
如果要实现你的逻辑,改成这样: