Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果使用一个for循环,则为任意_Python - Fatal编程技术网

Python 如果使用一个for循环,则为任意

Python 如果使用一个for循环,则为任意,python,Python,我正在检查是否有任何元素符合条件 if any( plus > minimum and minus > minimum for el in alist): # do something 但如果在同一循环中有(添加): if numpy.isnan(el.error): plus = el.value minus = el.value else: plus = el.value + el.error minus = el.value - el

我正在检查是否有任何元素符合条件

if any( plus > minimum and minus > minimum for el in alist):

    # do something
但如果在同一循环中有(添加):

if numpy.isnan(el.error):
    plus = el.value
    minus = el.value
else:
    plus = el.value + el.error
    minus = el.value - el.error

因此,我想在
any()
函数中包含for循环和if-else语句。

创建一个函数,并在
any
调用中使用它:

def checker(el, minimum):
    plus = minus = 0 # make sure to initialize
    if numpy.isnan(el.error):
        plus = el.value
        minus = el.value
    else:
        plus = el.value + el.error
        minus = el.value - el.error
    return plus > minimum and minus > minimum
if any(min_val(el) > minimum for el in alist):
然后使用
any

if any(checker(el,minimum) for el in alist):
    # do something!!

你也可以做一个令人厌恶的单行程序(类似于Patrick的评论)。

创建一个函数,并在你的
任何调用中使用它:

def checker(el, minimum):
    plus = minus = 0 # make sure to initialize
    if numpy.isnan(el.error):
        plus = el.value
        minus = el.value
    else:
        plus = el.value + el.error
        minus = el.value - el.error
    return plus > minimum and minus > minimum
if any(min_val(el) > minimum for el in alist):
然后使用
any

if any(checker(el,minimum) for el in alist):
    # do something!!

你也可以做一个令人厌恶的一行代码(类似于Patrick的评论)。

如果我正确理解了逻辑,你要确保
el.value
+/-
el.error
大于
最小值
,只要
错误
存在(否则只需使用

实际上,你不必检查两边,因为你可以在减法之前检查你的
abs
error
。可以定义辅助函数:

def min_val(el):
    if numpy.isnan(el.error):
        return el.value
    return el.value - numpy.abs(el.error)
然后在您的
任何
通话中使用该选项:

def checker(el, minimum):
    plus = minus = 0 # make sure to initialize
    if numpy.isnan(el.error):
        plus = el.value
        minus = el.value
    else:
        plus = el.value + el.error
        minus = el.value - el.error
    return plus > minimum and minus > minimum
if any(min_val(el) > minimum for el in alist):
您也可以将helper编写为lambda,甚至可以将整个表达式粘贴在
any
调用中,但这样会更难阅读:

min_val = lambda el: el.value - (0 if numpy.isnan(el.error) else abs(el.error))

如果我正确理解了逻辑,您需要确保
el.value
+/-
el.error
大于
最小值
,只要
错误
存在(否则只需使用

实际上,你不必检查两边,因为你可以在减法之前检查你的
abs
error。可以定义辅助函数:

def min_val(el):
    if numpy.isnan(el.error):
        return el.value
    return el.value - numpy.abs(el.error)
然后在您的
任何
通话中使用该选项:

def checker(el, minimum):
    plus = minus = 0 # make sure to initialize
    if numpy.isnan(el.error):
        plus = el.value
        minus = el.value
    else:
        plus = el.value + el.error
        minus = el.value - el.error
    return plus > minimum and minus > minimum
if any(min_val(el) > minimum for el in alist):
您也可以将helper编写为lambda,甚至可以将整个表达式粘贴在
any
调用中,但这样会更难阅读:

min_val = lambda el: el.value - (0 if numpy.isnan(el.error) else abs(el.error))

为什么不在
any()
函数之前执行if语句?@GijsDenHollander:因为我必须使用另一个for循环。我想知道没有它是否可能。但是在
any(…)
您不需要对
el
执行任何操作。..@WillemVanOnsem:这就是为什么我必须在any中插入if语句的原因。.我认为类似的方法应该可以工作<代码>任何(加号>最小值和减号>加号的最小值,减号在((el.value,el.value)if numpy.isnan(el.error)else(el.value+el.error,el.value-el.error)for el in alist))为什么不在
any()之前执行if语句
函数?@GijsDenHollander:因为我必须使用另一个for循环。我想知道没有它是否可能。但是在
any(…)
中,你不能使用
el
…@WillemVanOnsem:这就是为什么我必须在any中插入if语句的原因。我认为这样应该可以<代码>任意(加号>最小值和减号>加号的最小值,如果numpy.isnan(el.error),则为((el.value,el.value)中的加号,如果numpy.isnan(el.error),否则为el.alist(el.value+el.error,el.value-el.error))中的el(