首页 / PYTHON / 迭代时修改Python列表
迭代时修改Python列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了迭代时修改Python列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1446字,纯文字阅读大概需要3分钟。
内容图文
![迭代时修改Python列表](/upload/InfoBanner/zyjiaocheng/709/c38d54fe6f9348d8bd5a2d28b754fccb.jpg)
我知道你不应该在迭代列表时添加/删除项目.但是,如果我不更改列表长度,我可以修改列表中的项目吗?
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]]
UPD.我想看看python文档,它说“允许这些操作”,而不是某人的假设.
解决方法:
你没有修改列表,可以这么说.您只需修改列表中的元素.我不相信这是一个问题.
要回答你的第二个问题,确实允许这两种方式(正如你所知,因为你运行了代码),但这取决于具体情况.内容是可变的还是不可变的?
例如,如果要向整数列表中的每个元素添加一个,这将不起作用:
>>> x = [1, 2, 3, 4, 5]
>>> for i in x:
... i += 1
...
>>> x
[1, 2, 3, 4, 5]
实际上,整数是不可改变的对象.相反,您需要迭代索引并更改每个索引处的元素,如下所示:
>>> for i in range(len(x)):
... x[i] += 1
...
>>> x
[2, 3, 4, 5, 6]
如果你的项是可变的,那么第一种方法(直接迭代元素而不是索引)毫无疑问会更有效,因为索引的额外步骤是一个可以避免的开销,因为这些元素是可变的.
内容总结
以上是互联网集市为您收集整理的迭代时修改Python列表全部内容,希望文章能够帮你解决迭代时修改Python列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。