и не значения по индексу с array не равно 0 или все же нужно делать вложенный «if» ?
a = [1, 0, 1, 2]
a = None
my_index = 0
if type(a) == list and a[my_index] !=0:
pass
1) isinstance() 2) try: if a[my_index] except: pass
я задал немного другой вопрос) это нормально в одно условие делать проверку на тип и на проверку числа из индекса или делать вложенное условие?
А кроме списка и None возможны другие варианты и конкретный тип важен? Если да, то странно, если нет, то if a is not None and a[my_index] != 0:
может быть только лист или None
Проверка на тип странна сама по себе.
В условии может быть сколько угодно условий. Если важна читаемость(обычно она важна) то отталкиваетесь от того, что лучше читается. Если надо проверить тип - используйте isinstance Дзен питона говорит, лучше извиниться, чем спрашивать --- И да, на None проверяют через is
А зачем в этом случае вообще проверять на None? Можно просто if a
Дзен питона такого не говорит, но да, часто это более удачная стратегия.
Зависит от задачи. Возможно, что достаточно. Под if a попадают кроме None и другие значения, которые может хотеться не пропускать.
может быть только None или лист, другое быть не может
Тут человек сказал, что у него либо лист либо нан)
a = [] if a: # This won't run
но лист может быть пустым, поэтому if a адекватнее. заранее условие не проверяется, если первое False второе он не вычисляет. когда два c and кажется читаемее чем с 2мя ифами или траем
не может быть лист пустым
Но если в переменную может попасть всё что угодно, то тут, конечно, проблемы посерьёзнее имеются))
ну да. там же вторым условием индекс проверяется, поэтому для таких случаев is a вроде адекватнее правда
Выбор зависит от того, что должно произойти. если список пустой. Если это ошибка, то упасть с IndexError правильнее, чем молча пропустить.
Ну, не в дзене, но где-то в доке точно было про EAFP
Обсуждают сегодня