Если у меня есть массив строк, могу ли я проверить, находится ли строка в массиве без цикла 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
Вы также можете использовать тот же синтаксис для массива. Например, поиск в серии Pandas:
ser = pd.Series(['some', 'strings', 'to', 'query'])
if item in ser.values:
# do stuff
Используйте лямбда-функцию.
Скажем, у вас есть массив:
nums = [0,1,5]
Проверьте, находится ли 5 в nums
:
(len(filter (lambda x : x == 5, nums)) > 0)
Это решение более надежное. Теперь вы можете проверить, находится ли какое-либо число, удовлетворяющее определенному условию, в вашем массиве nums
.
Например, проверьте, существует ли в nums
любое число, большее или равное 5:
(len(filter (lambda x : x >= 5, nums)) > 0)
Вы должны использовать .values для массивов. например, у вас есть dataframe, у которого есть имя столбца, т.е. test ['Name'], вы можете сделать
if name in test['Name'].values :
print(name)
для обычного списка, который вы не должны использовать .values