好的,noob问题
我有这个代码
list = ['random', 'set', 'of', 'strings']
for item in list:
item.replace('a','b')
print list
Run Code Online (Sandbox Code Playgroud)
除非我将代码更改为此输出,否则输出不会显示替换
list = ['random', 'set', 'of', 'strings']
for item in list:
item = item.replace('a','b')
print list
Run Code Online (Sandbox Code Playgroud)
所以我的问题是到底发生了什么?为什么第一个例子没有自动分配?
该方法只是返回新值,它不会修改现有值.
没有设置规则指定所有或没有方法都会执行此操作,您必须检查每个方法的文档以明确知道它的作用和期望.
很多功能都是这样的.
拿着这个:
a = 1
b = 2
c = Add(a, b)
Run Code Online (Sandbox Code Playgroud)
你希望a或b在这一点上有新值吗?这是完全相同的事情.
现在,说了这么多,您的代码还有另一个问题.在任何情况下,该列表都不会实际更改.
为什么?因为您没有更新列表,所以您正在更新项目.
而item是列表中值的"副本".这不是严格正确的,但它足以满足这个答案(了解更多信息参考参考资料).
换句话说,如果您将两个示例更改为:
list = ['random', 'set', 'of', 'string']
for item in list:
item.replace('a','b')
print item
Run Code Online (Sandbox Code Playgroud)
与
list = ['random', 'set', 'of', 'string']
for item in list:
item = item.replace('a','b')
print item
Run Code Online (Sandbox Code Playgroud)
然后你会看到一个区别.
回答评论中的后续问题:如果你没有将结果存储在任何地方,它就会丢失.可以这样想:你打电话给你的朋友,问他的手表什么时间.他说"10:45",你回答"实际上我并不关心点击".
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |