Skip to main content
 首页 » 编程设计

python之在 Python 中列表更改时调用函数

2025年05月04日15myhome

我只是想知道您是否可以在列表更改(添加项目)时调用函数。 如果有的话,它看起来像这样:

def listchanged(): 
    print("The list has been changed!") 
 
list = ["apples","bananas"] 
listevent(list,listchanged) 

在 shell 中,您可以将一个项目附加到列表中,它会打印“列表已更改!”

谢谢!

请您参考如下方法:

您可以继承 list 以在更改列表时打印。

这是一个例子:

class EventList(list): 
 
    def __setitem__(self, key, value): 
        super(EventList, self).__setitem__(key, value) 
        print("The list has been changed!") 
 
    def __delitem__(self, value): 
        super(EventList, self).__delitem__(value) 
        print("The list has been changed!") 
 
    def __add__(self, value): 
        super(EventList, self).__add__(value) 
        print("The list has been changed!") 
 
    def __iadd__(self, value): 
        super(EventList, self).__iadd__(value) 
        print("The list has been changed!") 
 
    def append(self, value): 
        super(EventList, self).append(value) 
        print("The list has been changed!") 
 
    def remove(self, value): 
        super(EventList, self).remove(value) 
 
l = EventList(["apples","bananas"]) 
l.append('test') 

打印:

The list has been changed! 

或

只比较列表:

old_list = ["apples","bananas"] 
new_list = ["apples","bananas"] 
newer_list = ["apples","bananas", "oranges"] 
 
old_list == new_list #true 
old_list == newer_list #false 

这将在没有子类的情况下工作,因为 == 比较列表是否在相同的索引中具有相同的元素,而不是如果它们在 id 或哈希(在 lamens 中)完全相同。只需将旧的保存在一个变量中,然后当你想检查时就使用它。 (注意:这不提供自动调用打印的方式。这只是另一种方式)