在Python中如何将变量与列表成员匹配?
我想在一行代码里检查一个变量的值是否和给定列表中任何一个成员的值相等(==)。
2 个回答
1
编辑: 我会保留这个回答,因为生成器表达式非常有用(特别是和 any
和 all
一起使用),但如果你只是想检查某个元素是否在列表中,直接用 in
就可以了。
any(var == i for i in my_list)
解释:
any
是一个函数,它接受一个可迭代对象(比如列表),如果这个对象中有任何一个元素为真(True),它就返回真。
列表推导式 [x == i for i in my_list]
会生成一个布尔值的列表,逐个比较 x
和列表中的每个值。如果其中有任何一个比较结果为真,那么 x == i
就成立。所以如果你对这个列表使用 any
,你就能得到你想要的结果。
如果你把 []
改成 ()
,你就会得到一个生成器对象,它会一次生成一个值,而不是把所有值都存储在内存中。如果你把生成器表达式作为函数的唯一参数传入,你可以省略额外的括号,这样语法看起来会更简洁。
还有一个函数叫 all
。
6
使用 in
:
> lst = [1,'r']
> v = 1
> v in lst
True