如何解决如果值等于值列表之一,是否有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 举报,一经查实,本站将立刻删除。