Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果一个值等于Python值列表中的一个值,If语句是否有返回True的方法_Python_List_If Statement_List Comprehension - Fatal编程技术网

如果一个值等于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

在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 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]]