【问题标题】:How to remove item from iterable object?如何从可迭代对象中删除项目?
【发布时间】:2020-03-18 22:21:50
【问题描述】:

假设我有一个可迭代的 Movies 类,而 self.movi​​es 是 Movie 对象的列表。如何创建 remove_movie 方法?我提供的方法不起作用,因为 iterable 不是列表?

class Movies:
    def __init__(self):
        self.movies = []

    def __iter__(self):
        return iter(self.movies)

    def add_movie(self, movie):
        pass

    def remove_movie(self, id):
        for movie in self:
            if movie.id == id:
               self.remove(movie)

【问题讨论】:

  • self.movies.remove?但请注意在迭代列表时更改列表的长度。
  • 您当然可以访问底层列表:self.movi​​es.remove(movie);返回
  • jonrsharpe,quamrana 是的,你是对的,我完全忽略了它。对不起

标签: python iterable


【解决方案1】:

你得到一个 AttributeError。

self.movies.remove(movie)

【讨论】:

  • 这是正确的,但是有没有办法在不访问属性的情况下对自己进行实际操作?像一些可迭代的dunder方法,还是应该这样做?
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2022-05-17
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
相关资源
最近更新 更多