2015-07-20 74 views
3

編寫一個函數,該函數接收一個數字列表 和一個詞條列表,並只返回可被所有這些詞條整除的元素 。您必須使用兩個嵌套列表解析來解決它。檢查列表中的某些數字是否可以被某些數字整除?

divisible_numbers([12,11,10,如圖9所示,8個,7,6,5,4,3,2,1],[2,3])#返回[12,6]

DEF divisible_numbers(a_list,a_list_of_terms):

到目前爲止,我有一個模糊的僞代碼,它包括檢查列表,檢查是否可以將它分割爲新列表,檢查新列表檢查是否可以被下一項整除,直到重複,你已經完成了所有條款,我不希望任何人爲我做這件事,但也許是正確的方向提示?

+0

這裏開始https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions – ILostMySpoon

回答

9

內表達應該檢查是否爲特定的數目,該數目是在第二列表

all(i%j==0 for j in a_list_of_terms) 

然後外列表中理解通過所述第一列表中的項目進行迭代均勻地通過所有的術語的整除

[i for i in a_list if all(i%j==0 for j in a_list_of_terms)] 

總之

def divisible_numbers(a_list, a_list_of_terms): 
    return [i for i in a_list if all(i%j==0 for j in a_list_of_terms)] 

測試

>>> divisible_numbers([12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [2, 3]) 
[12, 6] 
+0

謝謝你,那是快的好地方。 – ibrahim

+0

不錯的使用這裏的所有功能。 – ntough

+0

如果清單很大,您可能需要首先考慮優化您的輸入,方法是檢查沒有共同因素的條款。這樣你就不會做不必要的檢查。例如,在[2,3,6]中處理6作爲一個術語是沒有意義的,任何被6整除的東西都可以被2和3整除。 – dpmcmlxxvi