在Python中不使用"in"判断列表成员资格

3 投票
6 回答
3942 浏览
提问于 2025-04-16 06:00

如何定义一个叫做 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:])

撰写回答