Если у меня есть массив строк, могу ли я проверить, находится ли строка в массиве без выполнения for
цикла? В частности, я ищу способ сделать это в if
утверждении, так что-то вроде этого:
if [check that item is in array]:
Если у меня есть массив строк, могу ли я проверить, находится ли строка в массиве без выполнения for
цикла? В частности, я ищу способ сделать это в if
утверждении, так что-то вроде этого:
if [check that item is in array]:
Ответы:
Предполагая, что вы имеете в виду «список», где вы говорите «массив», вы можете сделать
if item in my_list:
# whatever
Это работает для любой коллекции, а не только для списков. Для словарей он проверяет, присутствует ли данный ключ в словаре.
Я также собираюсь предположить, что вы имеете в виду «список», когда вы говорите «массив». Решение Свена Марнача хорошо. Если вы собираетесь проводить повторные проверки в списке, то, возможно, стоит преобразовать его в набор или Frozenset, который может быть быстрее для каждой проверки. Предполагая, что ваш список strs называется subjects
:
subject_set = frozenset(subjects)
if query in subject_set:
# whatever
Используйте лямбда-функцию.
Допустим, у вас есть массив:
nums = [0,1,5]
Проверьте, есть ли 5 в nums
:
(len(filter (lambda x : x == 5, nums)) > 0)
Это решение является более надежным. Теперь вы можете проверить, есть ли в вашем массиве любое число, удовлетворяющее определенному условиюnums
.
Например, проверьте, существует ли любое число, которое больше или равно 5 в nums
:
(len(filter (lambda x : x >= 5, nums)) > 0)
TypeError: object of type 'filter' has no len()
Вы должны использовать .values для массивов. например, скажем, у вас есть датафрейм с именем столбца, т. е. test ['Name'], вы можете сделать
if name in test['Name'].values :
print(name)
для нормального списка вам не нужно использовать .values