2024-04-28 21:17:44 发布
网友
假设我有一个有两个属性的类框,自我内容以及自身编号. 我在一个名为box的列表中有box的实例。有没有办法通过属性访问/修改一个特定的实例,而不是遍历各个框?例如,如果我想要一个箱号=40(列表未排序)修改其内容的最佳方法是什么。在
使用过滤器内置:
wanted_boxes = filter(lambda box: box.number == 40, boxes)
最直接的方法是使用列表理解:
answer=[box for box in boxes if box.number==40]
不过,还是要小心。这实际上是对整个list进行迭代。由于list没有排序,没有比遍历它更快的方法(从而进行线性搜索),除非您想将所有数据复制到其他数据结构中(例如dict,set或对{}进行排序)。在
list
dict
set
如果您需要更频繁地执行此操作,并且您有唯一的number,那么请创建一个字典:
number
numberedBox = dict((b.number, b) for b in Boxes)
然后,您可以直接使用数字访问您的框:
但是如果你想改变他们的号码,你也必须修改numberedBox字典。。。在
numberedBox
否则是的,您必须迭代列表。在
使用过滤器内置:
最直接的方法是使用列表理解:
不过,还是要小心。这实际上是对整个}进行排序)。在
list
进行迭代。由于list
没有排序,没有比遍历它更快的方法(从而进行线性搜索),除非您想将所有数据复制到其他数据结构中(例如dict
,set
或对{如果您需要更频繁地执行此操作,并且您有唯一的
number
,那么请创建一个字典:然后,您可以直接使用数字访问您的框:
^{pr2}$但是如果你想改变他们的号码,你也必须修改
numberedBox
字典。。。在否则是的,您必须迭代列表。在
相关问题 更多 >
编程相关推荐