Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表中删除特定对象?_Python_List_Class - Fatal编程技术网

Python 如何从列表中删除特定对象?

Python 如何从列表中删除特定对象?,python,list,class,Python,List,Class,我正在尝试学习python中的一些基本列表理解,下面是我正在处理的代码: class myClass: def __init__(self,num): self.num = num x = myClass(1) y = myClass(2) z = myClass(3) obj = [x,y,z] 这里,我想从列表“obj”中删除一个对象,它的self.num值是3,我该怎么做? 还假设列表中的每个对象都有自己唯一的self.num值。这可以通过多种方式实现,但一般

我正在尝试学习python中的一些基本列表理解,下面是我正在处理的代码:

class myClass:
    def __init__(self,num):
        self.num = num

x = myClass(1)
y = myClass(2)
z = myClass(3)

obj = [x,y,z]
这里,我想从列表“obj”中删除一个对象,它的
self.num
值是3,我该怎么做?
还假设列表中的每个对象都有自己唯一的
self.num
值。

这可以通过多种方式实现,但一般算法是:

  • 找到这个物体
  • 从列表中删除
  • 要查找对象,需要执行某种循环,例如:

    for o in obj:
        if o.num == 3:
            index = obj.index(o)
    
    现在您有了对象的索引,您可以使用
    obj.pop(index)
    删除它

    另一种方法是列表理解:

    obj = [o for o in obj if o.num != 3]
    

    这可以通过多种方式实现,但一般算法为:

  • 找到这个物体
  • 从列表中删除
  • 要查找对象,需要执行某种循环,例如:

    for o in obj:
        if o.num == 3:
            index = obj.index(o)
    
    现在您有了对象的索引,您可以使用
    obj.pop(index)
    删除它

    另一种方法是列表理解:

    obj = [o for o in obj if o.num != 3]
    

    非常快速的方法是使用Python内置方法
    过滤器

    list(filter(lambda x:x.num!=3, obj))
    

    这比列表理解快一点。

    相当快的方法是使用Python内置的方法
    过滤器

    list(filter(lambda x:x.num!=3, obj))
    

    这比列表理解要快一点。

    您只需通过列表理解就可以做到这一点

    obj=[i为obj中的i,如果i.num!=3]
    
    您只需理解列表即可完成此操作

    obj=[i为obj中的i,如果i.num!=3]
    
    您可以为您的类实现
    \uuuuueq\uuuu
    。使用这种方法,您可以隐藏类的内部细节,并且将来在不破坏代码的情况下更容易更改相等逻辑

    看_

    输出

    [num: 1, num: 2]
    

    您可以为您的类实现
    \uuuuuu eq\uuuu
    。使用这种方法,您可以隐藏类的内部细节,并且将来在不破坏代码的情况下更容易更改相等逻辑

    看_

    输出

    [num: 1, num: 2]
    

    obj=[o代表obj中的o,如果obj.num!=3]
    obj=[o代表obj中的o,如果obj.num!=3]
    列表理解意味着什么?它仍然不被推荐-列表理解意味着什么?它仍然不被推荐-总体上回答得很好(从函数编程角度来看),但实际上。它是不同的,但在这个特殊的情况下,它在我的电脑上的速度是原来的2倍。好了,伙计们,这是一个关于迭代器的新东西,我以前知道,但我错了。我为一个包含10万个实例的列表计时,如果剩余列表很小,理解速度将提高50%,如果可移动项目很少,理解速度将提高30%。总体回答不错(函数编程方面),但实际上。它是不同的,但在这个特殊的情况下,它在我的电脑上的速度是原来的2倍。好了,伙计们,这是一个关于迭代器的新东西,我以前知道,但我错了。我为一个包含1000万个实例的列表计时,如果剩余列表很小,理解速度将提高50%,如果可移动项目很少,理解速度将提高30%。