2014-10-31 34 views
0

這是我很難把一句話放在一起,所以請我請,但實質上,我正在尋找一種方法來使用排序,key = function)函數可以有2個變量。 例如, 可以說,我是通過項目的列表進行迭代,並且有一個單獨的列表等待...使用排序(列表,鍵=函數())與變量

separate_list = [1, 2, 3, 4, 5] 

iter_through_this = [11, 22, 33, 44, 55] 

,但我需要做的是:

for ITEM in iter_through_this: 
    print sorted(separate_list, key=(lambda it, n: ITEM % ... 

省略號是在哪裏我需要幫助,我怎樣才能成功地對這個列表進行排序(多次,每次迭代),根據項目的推斷?

我想排序基於(i in separate_list) <modulo> (i in iter through this)

+0

函數實際上不能有兩個參數,因爲其他值來自哪裏? 'sorted'不會知道你想要傳遞什麼值作爲參數。如果你已經擁有了一個雙參數函數,並且只想「修正」其中一個參數的值,那麼你可以用partial來做到這一點,或者只需要一個帶有一個參數的lambda函數,並調用實函數('lambda x:real_func(x,y)')。但是在這種情況下,只是不要用兩個參數來定義函數,並且問題不存在。 – abarnert 2014-10-31 23:16:14

回答

2

您可以只使用ITEM作爲封閉:

for item in iter_through_this: 
    print sorted(separate_list, key=lambda n: item % n) 

這裏nsorted傳入,但item從父範圍解決。