如果一个值等于Python值列表中的一个值,If语句是否有返回True的方法
在python中有没有类似的方法,如果一个值等于一组值中的一个,if语句返回true(不使用如果一个值等于Python值列表中的一个值,If语句是否有返回True的方法,python,list,if-statement,list-comprehension,Python,List,If Statement,List Comprehension,在python中有没有类似的方法,如果一个值等于一组值中的一个,if语句返回true(不使用或,然后复制第一个表达式和条件) 这是一个没有列表理解的例子,但是我想有一些类似的列表理解,考虑到它的全部目的是使代码更短 li = [int + 1 for int in range(10) if int == 2, 3, 5, 8] 但我还没有找到任何能做到这一点的东西。我知道你可以用或做这样的事情 li = [int + 1 for int in range(10) if int + 1 == 2
或,然后复制第一个表达式和条件)
这是一个没有列表理解的例子,但是我想有一些类似的列表理解,考虑到它的全部目的是使代码更短
li = [int + 1 for int in range(10) if int == 2, 3, 5, 8]
但我还没有找到任何能做到这一点的东西。我知道你可以用或做这样的事情
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()
、或
(不复制第一个表达式和条件),等等。它要么说的语法无效,要么做的事情不对。我真的不知道如何表达这个问题,所以我不能使用谷歌搜索
如果有人知道这是否可以做到,请提前感谢!) 有多种方法可以做到这一点。
一种方法是在[2,3,5,8]中使用if int
。基本上:
li=[int+1表示范围(10)内的int,如果int在[2,3,5,8]]
或者当然就是这个:
li=[int+1表示[2,3,5,8]中的int]
如果希望有更复杂的条件,也可以使用lambdas:
li=[int+1表示范围(10)内的int如果(λx:x%3==0)(int)]
您不需要lambda,但这将测试您的int
是否是三的倍数
关于lambda的一些想法:这里的lambda没有真正意义,因为您可以在没有lambda的情况下编写int%3==0
。我不想详细讨论lambdas,因为这超出了范围。因此,如果您想了解一些关于如何/何时使用它们的好例子,请查看
另一方面,如果n==2,3,5,8,则该不是有效的python
附加:
int
是内置的,不应用作变量名。即使它在语法上是正确的。有多种方法可以做到这一点。
一种方法是在[2,3,5,8]中使用if int
。基本上:
li=[int+1表示范围(10)内的int,如果int在[2,3,5,8]]
或者当然就是这个:
li=[int+1表示[2,3,5,8]中的int]
如果希望有更复杂的条件,也可以使用lambdas:
li=[int+1表示范围(10)内的int如果(λx:x%3==0)(int)]
您不需要lambda,但这将测试您的int
是否是三的倍数
关于lambda的一些想法:这里的lambda没有真正意义,因为您可以在没有lambda的情况下编写int%3==0
。我不想详细讨论lambdas,因为这超出了范围。因此,如果您想了解一些关于如何/何时使用它们的好例子,请查看
另一方面,如果n==2,3,5,8,则该不是有效的python
附加:
int
是内置的,不应用作变量名。即使它在语法上是正确的。你的意思是如果n在{2,3,5,8}
?你的意思是如果n在{2,3,5,8}
?我真的没有想到在if语句中使用in
。非常感谢。我真的没有想到在if语句中使用。谢谢大家!int
是一个重要的内置函数,不应将其用作变量名。在循环中定义并立即调用的lambda没有什么意义。@VPfB您是对的,您不应该使用int
作为变量名,我也不会,但它在语法上是正确的。是的,lambda
没有多大意义,它更像是一个例子。@Toydarian OP显然处于学习阶段。在我看来,他不应该学着那样使用lambdas。如果它在循环之前定义一次并在循环中重复使用,这是有意义的。@VPfB可能是对的,我在这个主题上添加了几行。@toydarian我想,因为int是一个类,它基本上是一个if语句,而不使用if,它将从列表中获取所有整数。当然,考虑到它的范围很广,我真的不需要它。我想我需要添加如果str(n).isdigit()要做到这一点?int
是一个重要的内置函数,不应该用作变量名。在循环中定义并立即调用的lambda没有什么意义。@VPfB您是对的,您不应该使用int
作为变量名,我也不会,但它在语法上是正确的。是的,lambda
没有多大意义,它更像是一个例子。@Toydarian OP显然处于学习阶段。在我看来,他不应该学着那样使用lambdas。如果它在循环之前定义一次并在循环中重复使用,这是有意义的。@VPfB可能是对的,我在这个主题上添加了几行。@toydarian我想,因为int是一个类,它基本上是一个if语句,而不使用if,它将从列表中获取所有整数。当然,考虑到它的范围很广,我真的不需要它。我想我需要添加if str(n).isdigit()
来实现这一点?
li = [int + 1 for int in range(10) if int + 1 == 2 or int + 1 == 3 or int + 1 == 5 or int + 1 == 8]
li = [int + 1 for int in range(10) if int + 1 in [2, 3, 5, 8]]