首先感谢各位关注我的问题,我是新手,问题浅薄,还请给位多包含。
代码如下:
s = ["~abb","~bccc~","abc","123"]
for i in s:
i = i.strip("~")
print i
print s
输出结果如下:
abb
bccc
abc
123
['~abb', '~bccc~', 'abc', '123']
这里有个疑问,为什么循环操作没有对list 发生作用?想了好久都没明白,我觉得是我对循环操作列表的理解有问题。
谢谢。
首先感谢各位关注我的问题,我是新手,问题浅薄,还请给位多包含。
代码如下:
s = ["~abb","~bccc~","abc","123"]
for i in s:
i = i.strip("~")
print i
print s
输出结果如下:
abb
bccc
abc
123
['~abb', '~bccc~', 'abc', '123']
这里有个疑问,为什么循环操作没有对list 发生作用?想了好久都没明白,我觉得是我对循环操作列表的理解有问题。
谢谢。
感谢大家的回复,我最终明白了问题其实是出在赋值上。
以下是代码:
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)
3 回答3k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答1.8k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
因为在你问题中的循环过程里,由于字符串是
不可变对象(类型)
,因此i
并没有引用列表每个元素的地址,只是重新生成了一个新变量i
,所以更改i
的过程实际上相当于:此时list仍然是原来的list。
如果我们的列表中有
可变对象(类型)
,譬如:此时输出列表
l
的结果就是:你自己回答的列表生成式是一种很高效的方法,如果一定要用for的话,我这里给你写一个: