gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:03 24 4
gpt4 key购买 nike

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

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 中)完全相同。只需将旧的保存在一个变量中,然后当你想检查时就使用它。 (注意:这不提供自动调用打印的方式。这只是另一种方式)

关于python - 在 Python 中列表更改时调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com