优雅地检查多个条件

Par*_*ani 0 python conditional-statements

我有一个范围列表和另一个数字列表。如果数字超出所有这些范围,我必须输出该数字。

ranges=['35-796', '811-953', '25-224']
numbers=[12, 30, 345, 800]

#I am looking for an efficient way of doing this
for number in numbers:
    if number not in range(35,797) and number not in range(811,954) and \
       number not in range(25,225):
        return number
Run Code Online (Sandbox Code Playgroud)

在上面的列表中,输出应为 12 和 800。

我可以通过一些处理将这些范围转换为任何形式,例如范围对象,或者我可以将最小值和最大值放入类似min<number<max.

我有大约 42 个范围和大约 5000 个数字需要检查。我正在寻找一种“Pythonic”且最有效的方法来做到这一点。

Bar*_*mar 5

更改ranges为范围列表,然后使用any().

ranges=[range(35, 797), range(811, 954), range(25, 225)]

for number in numbers:
    if not any(number in r for r in ranges):
        return number
Run Code Online (Sandbox Code Playgroud)