2013-04-06 28 views
2

這是一段時間以來一直困擾我的東西。例如,假設我有一個數字列表,並且我想檢查每個數字是否可以被另一個列表中的每個數字整除,那麼我該怎麼做?所有我能想到的是:確定一個條件是否適用於列表中的所有成員

mylist = [1,2,3,4,5,etc...] 
divisible = [1,2,3,4,5,6,etc...] 
for i in mylist: 
    for x in divisible: 
     if i % x == 0: 
      <do something> 

顯然,這將只檢查是否在mylist任何元素是「整除」的任何元素整除,但如果它是通過在該列表中的所有元素整除。我會如何去做這件事?由於

回答

5

你可以使用all

>>> i = 2*3*17*23 
>>> divs = [2, 17, 23] 
>>> all(i % x == 0 for x in divs) 
True 
>>> all(i % x == 0 for x in [2,13,17]) 
False 

參見anynext

>>> any(i % x == 0 for x in [5, 17, 101]) 
True 
>>> next(x for x in [5, 17, 101] if i % x == 0) 
17 
+3

隨着我的FP的帽子,應該是我不好意思已經想出了一個解決方案的程序;這是更清潔。 – 2013-04-06 20:16:54

+0

與此相關,我如何獲得它從'我''可以被divs'中的每個數字整除,而不僅僅是真的返回數字? – user2253076 2013-04-06 21:51:47

+0

@ user2253076:通常當你有一個單獨的問題時,最好單獨提問。但是像'[我爲我在mylist如果所有(i%x == 0爲div中的x)]'應該這樣做。 – DSM 2013-04-06 21:53:43

相關問題