Поиск символов Python в списке

#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) и строку 7 def 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)