【发布时间】:2011-05-22 09:53:54
【问题描述】:
我想在一行上检查变量的值是否与给定列表的任何成员的值匹配 (==)
【问题讨论】:
标签: python list variables match
我想在一行上检查变量的值是否与给定列表的任何成员的值匹配 (==)
【问题讨论】:
标签: python list variables match
使用in:
> lst = [1,'r']
> v = 1
> v in lst
True
【讨论】:
list是不好的咳嗽
编辑:我会留下这个答案,因为生成器表达式是有用的野兽(尤其是与 any 和 all 一起)但如果您只是测试列表中的成员资格,那么您应该使用in。
any(var == i for i in my_list)
解释:
any 是一个函数,它接受一个可迭代对象并在该可迭代对象的任何元素为 True 时返回 True。
列表推导[x == i for i in my_list] 是一个布尔值列表,将x 依次与列表中的每个值进行比较。如果其中任何一个为真,那么x == i。因此,如果您在该列表中致电any,您将得到您想要的答案。
如果您在编写列表推导时将[] 更改为(),您将获得一个生成器对象,它一次生成一个值,而不是在内存中构造它们。如果您将生成器表达式作为唯一参数传递给函数,则可以省略额外的括号集,以保留上面的简洁语法。
还有一个函数all。
【讨论】:
var in my_list