将列表从最长字符串长度返回到最短字符串长度

时间:2017-06-10 19:37:19

标签: python

将元素添加到列表中以根据字符串长度自动添加元素的好方法是什么?

例如。

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

中添加一个参数

1 个答案:

答案 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']