2017-05-04 57 views
1

我正在寻找一种简单的方法来比较多个列表的内容并找到变量最少的那个。添加东西到最空的列表? (python)

然后我想设置新变量添加到该列表。

例子:

list1 = [1,5,7,12,4,8] 
list2 = [3,2,9,11,14,6,10] 
list3 = [13,15,16] 

在此我希望它找到项目list3是最短和新值追加到它。

+0

感谢你和方向之间的答复家伙就指着我我得到了我所需要的一切以及更多。 –

回答

3

由于蟒minmax,并sortkey关键字参数,这是相当简单的在python

min([list1, list2, list3..], key = len).append(item) 

键对应做到功能应用于每个元素,其结果用于比较minmax。在这种情况下,使用函数len(其检索序列对象的长度,如列表和元组以及定义__len__的任何类)。

min

关键参数指定一个一个参数的排序函数那样的用于list.sort()

list.sort()

key指定用于一个参数的函数的从每个列表元素中提取一个比较键(例如,key = str.lower)。

例如

>>> x = [11231] 
>>> y = [1,2,3,4,5] 
>>> z = [1,2,3,4,1,1] 
>>> min([x,y,z], key = len) 
[11231] 
3

您可以编写一个小函数,检查每个列表的len,然后append到该列表。

def add_to_shortest(lists, item): 
    min(lists, key = lambda i: len(i)).append(item) 

例如

>>> add_to_shortest([list1, list2, list3], 5) 
>>> list3 
[13, 15, 16, 5]