<分区>
我知道您不应该在遍历列表时添加/删除项目。但是,如果我不更改列表长度,是否可以修改正在迭代的列表中的项目?
class Car(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return type(self).__name__ + "_" + self.name
my_cars = [Car("Ferrari"), Car("Mercedes"), Car("BMW")]
print(my_cars) # [Car_Ferrari, Car_Mercedes, Car_BMW]
for car in my_cars:
car.name = "Moskvich"
print(my_cars) # [Car_Moskvich, Car_Moskvich, Car_Moskvich]
或者我应该迭代列表索引吗?像那样:
for car_id in range(len(my_cars)):
my_cars[car_id].name = "Moskvich"
问题是:是上面两种方式都允许还是只有第二种方式没有错误?
如果答案是肯定的,下面的代码片段是否有效?
lovely_numbers = [[41, 32, 17], [26, 55]]
for numbers_pair in lovely_numbers:
numbers_pair.pop()
print(lovely_numbers) # [[41, 32], [26]]
更新。我希望看到 python 文档中说“允许这些操作”而不是某些人的假设。