【发布时间】:2009-06-12 18:08:15
【问题描述】:
假设我有一个列表
a = [1,2,3]
我想增加该列表中的每个项目。我想做一些语法上简单的事情
for item in a:
item += 1
但在该示例中,python 仅使用 item 的值,而不是其实际引用,因此当我完成该循环时,a 仍然返回 [1,2,3] 而不是 [2,3, 4]。我知道我可以做类似的事情
a = map(lambda x:x+1, a)
但这并不真正适合我当前的代码,我不想重写它:-\
【问题讨论】:
-
for 循环确实为您提供了实际的对象,而不是副本。问题是您使用的是数字。与所有 Python 值一样,数字(和字符串)都是对象,但每个文字都指代一个唯一的实例。因此,如果您可以将表示 1 的实例修改为 2,您最终会将所有 1 更改为 2,这有点糟糕。另一种方法是为每个值设置一个实例是不可行的。尝试使用 id 函数:id(1)、id('hello world') 等(它总是为相同的文字返回相同的地址。)
标签: python