2012-11-22 36 views
0

有人可以提供一些關於以下結果的評論。我特別困惑於我寫作時的實際操作:alist = [None] * 5#1 以及爲什麼'is'語句是False,但isinstance在#3中是True 非常感謝。列表類型測試元素

#1 
>>> alist = [None]*5 

>>> alist 

[None, None, None, None, None] 

>>> type(alist[0]) 

<type 'NoneType'> 

>>> type(alist[0]) is None 
False 

#2 
>>> alist = [int]*5 
>>> alist 

[<type 'int'>, <type 'int'>, <type 'int'>, <type 'int'>, <type 'int'>] 

>>> type(alist[0]) is int 

False 

>>> isinstance(alist[0],int) 

False 

#3 
>>> alist = [0.0]*5 

>>>type(alist[0]) 

<type 'float'> 

>>> alist[0] is float 

False 

>>> isinstance(alist[0],float) 

True 
+1

'is'運算符用於身份檢查,如果它是具有相同ID的完全相同的對象,則它只返回'True'。 – Wessie

+0

你不是在作業上作弊,是嗎? – Sebastian

回答

2

什麼,我實際上做,當我寫:要調用列表*操作ALIST = [無] * 5

。 在這裏看到:http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange

爲什麼 '是' 語句是假

因爲<type 'NoneType'>不是None,它是None類型。

isinstance是在#真3

因爲alist[0]是類型float的一個實例。難道不是那麼難嗎?

+0

這不是作業塞巴斯蒂安。但是你能否詳細說一下「無」的類型?那是什麼意思?在#3「isinstance」爲True,但「is」爲False。爲什麼?我相信這兩個是相關的,但仍然困惑。謝謝 – cdelsola

+0

@ user1816858:'None'是內置'types.NoneType'類的唯一實例的值。 – martineau

+0

@ user1816858:在#3中,「0.0」是類型爲「float」的實例,但它不是_the_type「float」。類型也是Python中的對象('type'類型的實例)。 – martineau