我最初认为Python是一种纯传递引用的语言。
来自C/C++的我无法不考虑内存管理,很难把它从我的脑海中抛开。因此,我试图以Java的视角思考,并将除基本类型外的所有内容视为传递引用。
问题:我有一个列表,其中包含许多用户定义类的实例。
如果我使用for-each语法,例如:
for member in my_list:
print(member.str);
member
是指向对象实际引用的等价物吗?
这相当于执行以下操作吗:
i = 0
while i < len(my_list):
print(my_list[i])
i += 1
我认为不是这样的,因为当我试图进行替换时,它不起作用,也就是说,下面这个不起作用:
for member in my_list:
if member == some_other_obj:
member = some_other_obj
如何在列表中进行简单的查找和替换?是否可以使用 for-each 循环完成,如果可以,具体如何操作?否则,我是否只能使用随机访问语法(方括号),或者两种方法都不可行,需要删除条目并插入新条目?
i = 0
for member in my_list:
if member == some_other_obj:
my_list.remove(i)
my_list.insert(i, member)
i += 1