Якщо у мене є масив рядків, чи можу я перевірити, чи є рядок у масиві, не роблячи for
циклу? Зокрема, я шукаю спосіб зробити це в if
заяві, тому щось подібне:
if [check that item is in array]:
Якщо у мене є масив рядків, чи можу я перевірити, чи є рядок у масиві, не роблячи for
циклу? Зокрема, я шукаю спосіб зробити це в if
заяві, тому щось подібне:
if [check that item is in array]:
Відповіді:
Якщо припустити, що ви маєте на увазі "список", де ви говорите "масив", ви можете це зробити
if item in my_list:
# whatever
Це працює для будь-якої колекції, а не лише для списків. Для словників він перевіряє, чи вказаний ключ присутній у словнику.
Я також припускаю, що ви маєте на увазі "список", коли ви говорите "масив". Рішення Свена Марнаха добре. Якщо ви збираєтесь робити повторні перевірки списку, можливо, варто перетворити його на набір або заморожений набір, що може бути швидшим для кожної перевірки. Якщо припустити, що ваш список 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 для масивів. наприклад, скажіть, що у вас є фрейм даних, який містить ім'я стовпця, тобто тест ['Ім'я'], ви можете це зробити
if name in test['Name'].values :
print(name)
для звичайного списку вам не доведеться використовувати .values