键入列表的测试元素

时间:2012-11-22 22:49:21

标签: python list testing types

有人可以就以下结果提供一些评论。当我写作时,我特别感到困惑的是: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 个答案:

答案 0 :(得分:2)

  

当我写作时我实际上在做什么:alist = [None] * 5 in

您正在列表中调用*运算符。 见这里:http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange

  

为什么'是'语句是假的

因为<type 'NoneType'>不是None,所以它是None的类型。

  

#3中的isinstance为True

因为alist[0]float类型的实例。不是那么难,是吗?