我只是想知道您是否可以在列表更改(添加项目)时调用函数。 如果有的话,它看起来像这样:
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 中)完全相同。只需将旧的保存在一个变量中,然后当你想检查时就使用它。 (注意:这不提供自动调用打印的方式。这只是另一种方式)
