微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果值等于值列表之一,是否有if语句返回True

如何解决如果值等于值列表之一,是否有if语句返回True

是否可以在python中执行类似的操作,如果一个值等于一组值中的一个,则if语句返回true(不使用or,然后复制第一个表达式和条件)?

li1 = [1,2,3,4,5,6,7,8,9,10]
li2 = []
for n in li1:
    if n == 2,8:
        li2.append(n)

这是一个没有列表理解的示例,但是我想在列表理解中使用类似的东西,考虑到它的全部目的是使代码更短。

li = [int + 1 for int in range(10) if int == 2,8]

但是我还没有找到任何可以做到这一点的东西。我知道您可以使用or并执行类似的操作,

li = [int + 1 for int in range(10) if int + 1 == 2 or int + 1 == 3 or int + 1 == 5 or int + 1 == 8]

但是看起来很长。我已经尝试了很多方法,例如使用列表,元组range()or(不复制第一个表达式和条件),等等。它要么只是说无效的语法,要么不执行正确的事。我真的不知道该如何措辞,所以我不能使用谷歌搜索

如果有人知道是否可以这样做,请提前谢谢! :)

解决方法

有多种方法可以实现。
一种是使用if int in [2,3,5,8]。基本上是这样的: li = [int + 1 for int in range(10) if int in [2,8]]

或者当然是这样: li = [int + 1 for int in [2,8]]

如果您想要更复杂的条件,也可以使用lambda:
li = [int + 1 for int in range(10) if (lambda x: x % 3 == 0)(int)]
您不需要为此使用lambda,但这会测试您的int是否为三的倍数。

一些关于lambda的想法:这里的lambda并没有什么意义,因为您可以不使用lambda而只写int % 3 == 0。我不想详细介绍lambda,因为这超出了范围。因此,如果您想要一些有关如何/何时使用它们的出色示例,请查看this answer

另一方面,这个if n == 2,8无效的python。

附加:
int是一个内置变量,不应用作变量名。即使在语法上正确。

,
li = [int + 1 for int in range(10) if int + 1 in [2,8]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。