#python #list
#python #Список
Вопрос:
В моей задаче мне нужно выполнить поиск определенного символа в списках (и списка в списке). Если char находится в списке, должно быть напечатано True.
Мой код:
def check(e,elem):
if isinstance (elem,list):
return exist(elem,e)
else:
return e == elem
def exist(elem,array):
for e in aray:
if check(e,elem):
return True
return False
exist('c', ['a',[['b','c'],'d', ['e']], 'f'])
С этим кодом я использую только a, d и f, но цикл не будет проверять другие символы. И терминал выдает мне ошибку на ‘c’, недопустимый символ в идентификаторе.
Комментарии:
1. Внимательно посмотрите на строку 3
return exist(elem,e)
и строку 7def exist(elem,array):
2. E является элементом массива, поэтому я не уверен, что вы пытаетесь сказать
3. Проблема была с isinstance (e, list)
4.in
check
e
— это символ, который вы ищете,elem
является списком, в то время как вы передаете список какelem
exists
и символ какarray
. Возможно, вам следует рассмотреть возможность использования подробных и согласованных имен аргументов.5. Я должен лучше писать имена переменных
Ответ №1:
Вот исправленный код:
def check(e,elem):
if isinstance (e,list):
return exist(elem, e)
else:
return e == elem
def exist(elem,array):
for e in array:
if check(e,elem):
return True
return False
Тестирование:
print (exist('c', ['a',[['b','c'],'d', ['e']], 'f']))
print (exist('c', ['a',[['b',['c']],'d', ['e']], 'f']))
print (exist('c', ['a',[['b',['a', 'c']],'d', ['e']], 'f']))
print (exist('c', ['a',[['b',['a', ['b', 'c']]],'d', ['e']], 'f']))
print (exist('c', ['a',[['b',['a', ['b', 'a']]],'d', ['e']], 'f']))
Вывод:
True
True
True
True
False
Ответ №2:
Мой код:
if isinstance(elem, list)
Правильно:
if isinstance(e, list)