0

有人可以就以下结果提供一些评论。当我写时,我对自己实际在做什么感到特别困惑: alist = [None]*5 in #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
4

1 回答 1

2

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

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

为什么“是”陈述是假的

因为<type 'NoneType'>is not None,它是 的类型None

isinstance 在 #3 中为 True

因为alist[0]是 type 的一个实例float。那不是很难,是吗?

于 2012-11-22T23:05:43.367 回答