确定条件是否适用于列表的所有成员

use*_*076 2 python iterator for-loop

这是我一段时间没有想到的事情.例如,假设我有一个数字列表,我想检查每个数字是否可以被另一个列表中的每个数字整除,我该怎么做?我能想到的只有:

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>
Run Code Online (Sandbox Code Playgroud)

显然,这只会检查是否有任何元素mylist可以被'divisible'中的任何元素整除,但是如果它可以被该列表中的所有元素整除则不会.我该怎么做呢?谢谢

DSM*_*DSM 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
Run Code Online (Sandbox Code Playgroud)

又见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
Run Code Online (Sandbox Code Playgroud)

  • 戴上我的FP,我应该为提出程序解决方案而感到尴尬; 这个更清洁了. (3认同)