2017-05-04 33 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]