Ну, конечно, есть много способов сделать это, но вас немного затрудняет запрет "in" в любом месте кода.Вот несколько вещей, которые можно попробовать.
Вариации на тему ...
def is_member(item, seq):
return sum(map(lambda x: x == item, seq)) > 0
def is_member(item, seq):
return len(filter(lambda x: x != item, seq)) != len(seq)
Возможно, вы слышали, что просить прощения лучше, чем просить разрешения ...
def is_member(item, seq):
try:
seq.index(item)
return True
except:
return False
Или что-то более функциональное ...
import itertools, operator, functools
def is_member(item, seq):
not_eq = functools.partial(operator.ne, item)
return bool(list(itertools.dropwhile(not_eq, seq)))
Но, поскольку ваши требования исключают использование циклической конструкции, которая была бы наиболее разумной, я думаю, что эксперты рекомендуютнаписание вашего собственного цикла цикла.Что-то вроде ...
def loop(action, until):
while True:
action()
if until():
break
def is_member(item, seq):
seq = seq
sigil = [False]
def check():
if seq[0] == item:
sigil[0] = True
def til():
seq.remove(seq[0])
return not len(seq)
loop(check, til)
return sigil[0]
Дайте нам знать, как это происходит.