python中[None]和[]之间的区别是什么?

时间:2016-04-29 02:33:37

标签: python list

我认为[无]与[]相同,但在我的测试中,也许有一些东西......

>>>print len([])
0
>>>print len([None])
1

什么时候应该使用None?和[]

和另一个有趣的问题

>>>c= []
>>>d= []
>>>print c is d
False
>>>a= 1
>>>b=1
print a is b
True

为什么空列表的ID授予不同?

5 个答案:

答案 0 :(得分:9)

1-letter words 1 2-letter words 2 3-letter words 2 4-letter words 3 7-letter words 1 是一个空列表

prepareForSegue是一个包含一个元素的列表。那个元素是var buttonTitle: String?;

override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated); if let buttonTitle = buttonTitle { startTimeDateButton.setTitle(buttonTitle, forState: .Normal); } } 检查引用相等性。如果两个对象通过引用引用同一个对象,则override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var DestViewController : CreatePostScrollViewController = segue.destinationViewController as! CreatePostScrollViewController if dateText != "" { DestViewController.buttonTitle = dateText } else if dateText == "" { DestViewController.buttonTitle = currentDate } } 将返回true。

[]

答案 1 :(得分:1)

[None]并不意味着列表中没有任何内容。 None is a keyword in python具有特殊意义。就像其他语言中的NILNULL一样。

当您说[None]时,您说“我希望有一个包含名为None的特殊对象的列表”。这与说“我想要一个不包含元素的列表”(通过键入[])不同。

答案 2 :(得分:1)

问题1:

无是一个对象。它的类型为" NoneType"。
通过在终端中执行类似的操作可以看出这一点:

>>> type(None)
<type 'NoneType'>

因此,当您将此对象放在列表中时,列表中只有一个元素。

问题2:

Python中的赋值运算符=用于将名称附加到对象。对于不可变对象(如整数),可以将多个名称附加到同一对象。这就是您使用ab所做的事情。因此,当您使用is运算符测试其身份时,您会看到这两个名称指向相同的对象。

或者,当您将名称附加到新创建的列表(使用[]运算符创建)时,每次都会显示不同的列表。

答案 3 :(得分:1)

None是一个有效的元素,但您可以将其视为存根或占位符。因此,即使只有None,它也会计入列表中的元素。

对于(相等)比较,您不应使用is。使用==

如果您不确切知道何时以及如何使用它,is会导致奇怪的行为。例如:

>>> 1900 is 1900
True

>>> a = 1900
>>> b = 1900
>>> a is b
False

>>> a, b = 1900, 1900
>>> a is b
True

例如,在这个问题中解释了这种相当奇怪的行为:Why does Python handle '1 is 1**2' differently from '1000 is 10**3'?

使用==

时不会发生这种情况
>>> a == b
True
>>> 1900 == 1900
True
像人们期望的那样。

答案 4 :(得分:0)

您希望使用None来暗示没有有效的对象。您希望使用[]来暗示一个列表类型且没有元素的对象。

[None]是一个列表,其中包含一个None

元素
>>>c= []  # This is a new list object
>>>d= []  # This is another new list object

在Python中,x is y用于检查xy是否是相同的对象。 这里,cd指向不同的列表对象。 所以,

>>>print c is d
False
预计

另一方面,

>>>c= []  # This is a new list object
>>>d = c  # This is the same object as c
>>>print c is d
True

这里,a和b是基元,而不是对象

>>>a= 1
>>>b=1

所以,这是预期的:

print a is b
True