【问题标题】:OOP python - removing class instance from a listOOP python - 从列表中删除类实例
【发布时间】:2023-04-03 22:53:01
【问题描述】:

我有一个列表,用于保存由特定类创建的对象。

我想知道,因为我无法解决这个问题,如何从列表中删除该类的实例?

这应该基于知道对象的一个​​属性而发生。

【问题讨论】:

  • 下次你应该添加一个你无法工作的代码示例时,也要接受最能帮助你解决问题的答案,并对有用的答案投票。跨度>
  • 不客气,您可能还想听从Style guide for questions and answers 中的一些建议。更好的问题会带来更好的答案。

标签: python list object


【解决方案1】:

遍历列表,找到对象及其位置,然后将其删除:

for i, o in enumerate(obj_list):
    if o.attr == known_value:
        del obj_list[i]
        break

【讨论】:

  • 如果您只需要删除一个元素,这将非常有效,否则@unutbu 的答案有效。
【解决方案2】:

您可以使用列表推导:

thelist = [item for item in thelist if item.attribute != somevalue]

这将删除带有item.attribute == somevalue所有项。

如果您只想删除一个这样的项目,请使用WolframH's solution

【讨论】:

  • 过滤器的工作方式类似于列表解析,但通常调用 filter 比列表解析要慢。
【解决方案3】:

您可以将它们存储在字典中并按名称删除它们

di = {"test" : my_instance()}
del di['test']

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多