Перевірте, чи є елемент у масиві / списку


203

Якщо у мене є масив рядків, чи можу я перевірити, чи є рядок у масиві, не роблячи forциклу? Зокрема, я шукаю спосіб зробити це в ifзаяві, тому щось подібне:

if [check that item is in array]:

3
Я думаю , що питання вже відповів тут
Tarun Ande


Відповіді:


395

Якщо припустити, що ви маєте на увазі "список", де ви говорите "масив", ви можете це зробити

if item in my_list:
    # whatever

Це працює для будь-якої колекції, а не лише для списків. Для словників він перевіряє, чи вказаний ключ присутній у словнику.


1
@jdi, і цей цикл буде працювати набагато швидше, ніж той, який явно закодований в Python, не кажучи вже про його легкість для читання.
Марк Рансом

17

Я також припускаю, що ви маєте на увазі "список", коли ви говорите "масив". Рішення Свена Марнаха добре. Якщо ви збираєтесь робити повторні перевірки списку, можливо, варто перетворити його на набір або заморожений набір, що може бути швидшим для кожної перевірки. Якщо припустити, що ваш список strs називається subjects:

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

3

Використовуйте функцію лямбда.

Скажімо, у вас є масив:

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)

Це працює з Python2. З Python 3.7 ви отримаєте цю помилку:TypeError: object of type 'filter' has no len()
Jun711,

1

Ви повинні використовувати .values ​​для масивів. наприклад, скажіть, що у вас є фрейм даних, який містить ім'я стовпця, тобто тест ['Ім'я'], ви можете це зробити

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

для звичайного списку вам не доведеться використовувати .values


Я думаю, вам потрібен об’єкт Pandas DataFrame для використання .values.
troymyname00

-3

Ви також можете використовувати той самий синтаксис для масиву. Наприклад, пошук у серії Pandas:

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

if item in ser.values:
    # do stuff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.