Автор оригинала: Pankaj Kumar.
Найти строку в списке в Python
В этой статье мы посмотрим на то, как мы можем найти строку в списке в Python.
Найти строку в списке в Python
Существуют различные подходы к этой проблеме, от простоты использования для эффективности.
Используя оператор ‘in’
Мы можем использовать Python’s в Оператор, чтобы найти строку в списке в Python. Это занимает два операнда А
и B
и имеет форму:
ret_value = a in b
Здесь Ret_Value
это логический, который оценивает Правда
Если А
лежит внутри B
и Ложь
иначе.
Мы можем напрямую использовать этот оператор следующим образом:
a = [1, 2, 3] b = 4 if b in a: print('4 is present!') else: print('4 is not present')
Выход
4 is not present
Мы также можем преобразовать это в функцию, для простоты использования.
def check_if_exists(x, ls): if x in ls: print(str(x) + ' is inside the list') else: print(str(x) + ' is not present in the list') ls = [1, 2, 3, 4, 'Hello', 'from', 'AskPython'] check_if_exists(2, ls) check_if_exists('Hello', ls) check_if_exists('Hi', ls)
Выход
2 is inside the list Hello is inside the list Hi is not present in the list
Это наиболее часто используемый и рекомендуемый способ поиска строки в списке. Но, для иллюстрации, мы покажем вам другие методы.
Использование списка понимание
Давайте возьмем еще один случай, где вы хотите проверить, только ли строка является частью другого слова в списке и возврат Все Такие слова, где ваше слово представляет собой подменю элемента списка.
Рассмотрим список ниже:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi']
Если вы хотите искать подстроку Привет
Во всех элементах списка мы можем использовать список списков в следующем формате:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] matches = [match for match in ls if "Hello" in match] print(matches)
Это эквивалентно следующему коду, который просто имеет два цикла и проверки для условия.
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] matches = [] for match in ls: if "Hello" in match: matches.append(match) print(matches)
В обоих случаях выход будет:
['Hello from AskPython', 'Hello', 'Hello boy!']
Как вы можете наблюдать, на выходе все совпадения содержат строку Привет
как часть строки. Просто, не так ли?
Использование метода «любой ()»
Если вы хотите проверить наличие входной строки в любой Пункт списка, мы можем использовать любой () метод Чтобы проверить, надеется ли это.
Например, если вы хотите проверить, есть ли « Аскупптон ‘ является частью любого из элементов списка, мы можем сделать следующее:
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] if any("AskPython" in word for word in ls): print('\'AskPython\' is there inside the list!') else: print('\'AskPython\' is not there inside the list')
Выход
'AskPython' is there inside the list!
Использование фильтра и лямбдаса
Мы также можем использовать Фильтр ()
Метод на лямбда Функция , что является простой функцией, которая определяется только на этой конкретной линии. Подумайте о лямбде как мини-функция, которые не могут быть использованы после звонка.
ls = ['Hello from AskPython', 'Hello', 'Hello boy!', 'Hi'] # The second parameter is the input iterable # The filter() applies the lambda to the iterable # and only returns all matches where the lambda evaluates # to true filter_object = filter(lambda a: 'AskPython' in a, ls) # Convert the filter object to list print(list(filter_object))
Выход
['Hello from AskPython']
У нас есть то, что мы ожидали! Только одна строка соответствует нашей функции фильтра, и это действительно то, что мы получаем!
Заключение
В этой статье мы узнали о том, как мы можем найти строку с помощью списка ввода с разными подходами. Надеюсь, это помогло вам с вашей проблемой!
использованная литература
- Журналдав Статья На поиск строки в списке
- Stackoverflow вопрос При нахождении строки внутри списка