在Python中不使用"in"判断列表成员资格
如何定义一个叫做 is_member() 的函数,这个函数需要两个输入:一个值 x(可以是数字、字符串等),还有一个值的列表 a。如果 x 在列表 a 中,就返回 True;如果不在,就返回 False。注意,这个功能其实就是 Python 中 in 操作符的作用,但为了练习,我需要假装 Python 没有这个操作符。
这是我想到的代码,但它不管用!
def is_member(x, a):
return x == a[::]
6 个回答
2
使用生成器表达式(注意,这里的 in
操作符和另一个没有关系)
def is_member(x, a):
return any(x == y for y in a)
>>> is_member(10, xrange(1000000000000000))
True
4
我能想到两种(补充:三种)方法来实现这个:
第一种:
def is_member(array, value):
try:
array.index(value)
except ValueError:
return False
else:
return True
第二种:
def is_member(array, value):
for item in array:
if item == value:
return True
return False
补充:还有第三种:
def is_member(array, value):
return array.count(value) > 0
3
递归解决方案:
def is_member(value, array):
if len(array) == 0:
return False
return value == array[0] or is_member(value, array[1:])