【问题标题】:Conditional with list comprehension (NOT list comprehension with conditional) in python [duplicate]python中带有列表理解的条件(不是带有条件的列表理解)[重复]
【发布时间】:2020-05-29 13:02:08
【问题描述】:

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

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

本质上,如果 x 数组中的值与任何值之间的差的绝对值大于 100,我希望程序继续运行。但是目前的语法是不正确的。我到底错过了什么?谢谢和最好的问候,

-AA

【问题讨论】:

  • 您不需要列表理解。您没有创建list,这就是列表推导的用途。一个简单的循环会更好,或者你可以使用生成器表达式和any,所以any(abs(value - e) > 100 for e in x)

标签: python conditional-statements list-comprehension


【解决方案1】:

您可以使用any

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

【讨论】:

  • 我不同意你的观点,但 OP 确实要求这样做。
【解决方案2】:

使用any:

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

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

【讨论】:

    【解决方案3】:

    很简单,

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

    【讨论】:

    • 虽然效率低下。如果列表包含一百万个项目并且第一个项目满足条件,它仍然会不必要地检查所有项目。
    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 2020-11-25
    • 2014-01-18
    • 2021-12-08
    • 2014-08-17
    • 2022-11-23
    • 2015-03-31
    相关资源
    最近更新 更多