Чтобы соответствовать вашему ожидаемому результату, вы не можете использовать set.intersection
в качестве множества неупорядоченного так что если вы получаете a
в качестве первого пункта она полностью случайно, вы должны сделать key
набор и использовать in
, итерацию по списку возвращающегося первый матч, который будет держать заказ:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
return ele
return False
Если вы хотите, чтобы получить все матчи и увидеть не являющиеся матчи просто сделать ключевой набор и использовать цикл:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
print(ele)
else:
# do whatever
Если вы хотите вернуть логическое значение в зависимости от того есть какой-либо общий элемент использует set.isdisjoint
:
def findexact(lst):
key = {'a','g','t'}
return not key.isdisjoint(lst)
Если есть хотя бы один матч, то функция возвращает истину, если нет, то множества не пересекаются, так это вернет False.
Если вы хотите использовать индекс перечислю:
def findexact(lst):
key = {'a','g','t'}
for ind,ele in enumerate(lst):
if ele in key:
return ind, ele
return False
Это будет возвращать как элемент и индекс, если есть совпадение, если вы просто хотите, индекс просто вернуть ind
, ни по игре, мы просто вернуться False
Что вы пытаетесь сделать? – Cyphase
Печать '' a'' и "return True" - это не одно и то же. Какой вы хотите? – TigerhawkT3
Упс. Сожалею. Я писал сообщение, затем я изменил код, чтобы напечатать «a». Я забыл изменить название. – niamleeson