Проверьте, находится ли элемент в массиве

Если у меня есть массив строк, могу ли я проверить, находится ли строка в массиве без цикла for? В частности, я ищу способ сделать это в инструкции if, так что примерно так:

if [check that item is in array]:

Ответ 1

Предполагая, что вы имеете в виду "список", где вы говорите "массив", вы можете сделать

if item in my_list:
    # whatever

Ответ 2

Я также собираюсь предположить, что вы имеете в виду "список", когда вы говорите "массив". Решение Свена Марнаха хорошее. Если вы собираетесь делать повторные проверки в списке, то, возможно, стоит преобразовать его в набор или frozenset, который может быть быстрее для каждой проверки. Предполагая, что ваш список strs называется subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

Ответ 3

Вы также можете использовать тот же синтаксис для массива. Например, поиск в серии Pandas:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff

Ответ 4

Используйте лямбда-функцию.

Скажем, у вас есть массив:

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)

Ответ 5

Вы должны использовать .values ​​для массивов. например, у вас есть dataframe, у которого есть имя столбца, т.е. test ['Name'], вы можете сделать

if name in test['Name'].values :
   print(name)

для обычного списка, который вы не должны использовать .values ​​