2017-09-29 56 views
-6

我无法通过列表排序,而不使用内置的排序()函数。我已经完成了我的研究,但似乎无法找到解决方案。排序列表与函数返回一个新的列表

这是我有:

def min_len_word(list): 
    return min(list, key=len) 

我想用这个函数返回由它的元素和长度排序的列表要做到这一点,我想我应该使用或while循环,但我不确定如何在循环中使用函数。

编辑

我对缺乏信息表示歉意! 我有两个功能

def min_len_word(list): 
return min(list, key=len) 

def sorted_list(list): 

我想第二个函数使用第一个函数来获取结果

+5

'如何min'选什么?顾名思义,'min'返回集合中最小的元素。 –

+1

你有许多排序算法。使用它们! –

+1

@WillemVanOnsem我想他想在另一个排序函数中使用该函数。但它不是很清楚。 –

回答

2

林不知道你真正想做的事情,这里一个例子,你如何在python中对排序列表进行排序:

x = [ 
    {'text':"f", 'len':5}, 
    {'text':"a", 'len':8}, 
    {'text':"d", 'len':0}, 
    {'text':"e", 'len':2}, 
    {'text':"c", 'len':3}, 
    {'text':"b", 'len':9} 
] 

def min_len_word(list): 
    return sorted(list, key=lambda k: k['len']) 

此函数返回按其len值排序的列表。

listx = [ "x", "aaa","bbb"] 
def min_len_word(list): 
    return sorted(list, lambda x,y: cmp(len(x), len(y))) 

或者也许这样? 此功能通过其长度排序的字符串列表

编辑:

listx = [ "x", "aasdasdadaa","bbxxb","aaa","bbb"] 
def min_len_word(list): 
    return min(list, key=len) 

def sorted_list(list): 
    result = [] 
    while len(list) != 0: 
     result.append(min_len_word(list)) 
     list.remove(min_len_word(list)) 
    return result 

print(sorted_list(listx)) 

不使用排序功能/排序:)

+0

也称为选择分类。 – timgeb

+1

谢谢!这是我正在寻找的解决方案 – 010101010