我有一个列表,想要更改其元素
list = ['apple','potato']
现在,虽然这有效
for i in range(list):
list[i] = list[i].capitalize()
这个没有,我只是不明白为什么
for i in list:
i = i.capitalize()
我是Python的新手,我唯一的背景是C ++,所以我仍然在努力适应Python的风格。如果已经询问过这类问题,请随时重定向并关闭此主题。谢谢!
答案 0 :(得分:1)
在循环中分配将在i
内创建一个新名称for
,在每次迭代后丢失其值。
但这并非如此。如果您正在处理可以就地更改的可变子结构, 可以注意到效果,即:
l = [[1], [2]]
for i in l:
i.append(2)
更改将相应地反映出来(子列表将附加到2
)。
str
个不可变对象。对i.capitalize()
实例执行操作的str
将创建已分配然后丢失的值的新副本。它不会影响列表中的对象。
i
中的值for i in container:
确实将引用到序列中包含的对象。将i
分配给i.capitalize()
的结果时,名称i
现在将引用返回的新大写实例。
请勿尝试在C++
和Python
之间绘制相似之处,我知道它有时会使学习变得更容易,但有时候会让你感到困惑。
强制性说明:请勿使用list
作为名称,它会屏蔽内置名称list
。