python中带列表理解的条件(不是带条件的列表理解)

python中带列表理解的条件(不是带条件的列表理解),python,conditional-statements,list-comprehension,Python,Conditional Statements,List Comprehension,我想我会在标题中详细说明,因为我在互联网上找到了后者,但没有找到前者。我很好奇如何获得一个包含在python中工作的列表理解的条件。具体来说,我很好奇如何做以下事情: if (abs(value - any_x)) > 100 for any_x in x: 基本上,我希望程序在值与x数组中任何值之间的差值的绝对值大于100时继续运行。但目前的语法是不正确的。我到底错过了什么?谢谢并致以最良好的祝愿 -AA非常简单 True in [abs(k-value)>100 for k i

我想我会在标题中详细说明,因为我在互联网上找到了后者,但没有找到前者。我很好奇如何获得一个包含在python中工作的列表理解的条件。具体来说,我很好奇如何做以下事情:

if (abs(value - any_x)) > 100 for any_x in x:
基本上,我希望程序在值与x数组中任何值之间的差值的绝对值大于100时继续运行。但目前的语法是不正确的。我到底错过了什么?谢谢并致以最良好的祝愿

-AA

非常简单

True in [abs(k-value)>100 for k in x]

你可以用

使用
任何

if any(abs(value - any_x) > 100 for any_x in x):
    ...

这里不要使用列表理解,因为任何列表都会在找到的第一个
True
值上返回
True
。因此,为其提供一个生成器是最有效的方法,因为它将被延迟评估。

您不需要列表理解。您没有创建一个
列表
,这正是列表理解的目的。简单的循环会更好,或者您可以使用生成器表达式和
any
,因此
any(abs(value-e)>100表示x中的e)
效率低下。如果列表包含一百万个项目,并且第一个项目满足条件,它仍然会不必要地检查所有项目。我不同意你的观点,但OP确实要求这样做。
if any(abs(value - any_x) > 100 for any_x in x):
    ...