2015-09-28 2 views
0
>>> from numpy import mean 
>>> mylist = [] 
>>> mean(mylist) if mylist is not [] else None 
nan 

Я думал, что испытание должно было быть оценено сначала в тройном операторе. Я ожидал None. Почему я получил nan?Порядок оценки порядка работы оператора со средним пустым списком

Редактировать: Почему пустым списком будет тождественно то же самое, что и []?

ответ

5

Испытание

mylist is not [] 

не проверяет mylist пуст. Он проверяет, идентичен ли он тому же объекту, что и другой пустой список.

Вы должны просто использовать:

mean(mylist) if mylist else None 
+0

Почему бы не пустой список тождественно такой же, как []? – Hatshepsut

+2

На самом деле 'mylist is not []' всегда будет 'True'. Любой новый список отличается от любого существующего списка. –

+3

@ Хатшепсут: почему бы * они были бы такими же? Тот факт, что две сумки обе пусты, не означает, что они на самом деле являются одним и тем же мешком. – DSM