将元素添加到列表中以根据字符串长度自动添加元素的好方法是什么?
例如。
class MyQueueSystem():
def __init__(self, myfunction):
self.myfucntion = myfunction
self.data = []
def add(self, item):
pass
例如,
def shorter(a, b):
return len(a) < len(b)
>>> me = MyQueueSystem(shorter)
>>> me.add('111')
>>> me.add('11')
>>> me.add('11111')
>>> print (me.data)
['11111','111','11']
add函数中的项是一个对象。
我的问题是,如何将函数作为参数访问?
编辑:我忘了在 Init
中添加一个参数答案 0 :(得分:1)
您可以在sorted
功能中使用add(..)
功能根据len
对列表进行排序。以下是您班级的示例结构:
class MyQueueSystem():
# v It should be passed as an argument to `__init__`
def __init__(self, data):
self.data = self._sort_on_length(data)
def add(self, item):
self.data = self._sort_on_length(self.data+[item])
def _sort_on_length(self, sort_list):
"""
Function to sort the argument `list` based on the length
in the descending order
"""
return sorted(sort_list, key=lambda x: -len(x))
示例运行:
>>> my_object = MyQueueSystem(['111', '11', '11111'])
>>> my_object.data
['11111', '111', '11']
>>> my_object.add('1111')
>>> my_object.data
['11111', '1111', '111', '11']