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