为何Python中第一种循环代码无法剥离销售列表的$符号,第二种却可行?
strip() 写法效果差异的核心逻辑
底层核心规则
Python 的字符串是不可变类型,所有内置的字符串修改方法(包括strip()、replace()、split()等)都不会直接修改原字符串对象本身,只会生成并返回一个完成修改的全新字符串。
两种写法的差异拆解
- 方法1无效的根因:单独执行的
element.strip('$')代码确实运行了去除$的逻辑,但因为没有接住这个方法返回的新字符串,运算结果没有被任何变量保存,执行完就会被直接回收。后续打印的element仍然指向循环中拿到的原始带$的字符串,自然输出和原始值没有区别。 - 方法2生效的原因:代码直接将
element.strip('$')的返回值作为参数传入print()函数,没有丢弃处理后的结果,打印时直接输出了去除$的新字符串,因此结果符合预期。
常见修正参考
如果需要在循环中使用处理后的值,需要主动承接方法的返回值:
sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59'] for element in sales: processed_price = element.strip('$') print(processed_price)
如果需要真正修改原列表中存储的所有价格值,可以通过列表推导式重新生成列表并赋值:
sales = [price.strip('$') for price in sales]
内容的提问来源于stack exchange,提问作者t92
相关产品推荐
相关产品推荐

