我认为[无]与[]相同,但在我的测试中,也许有一些东西......
>>>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授予不同?
答案 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具有特殊意义。就像其他语言中的NIL
或NULL
一样。
当您说[None]
时,您说“我希望有一个包含名为None
的特殊对象的列表”。这与说“我想要一个不包含元素的列表”(通过键入[]
)不同。
答案 2 :(得分:1)
无是一个对象。它的类型为" NoneType"。
通过在终端中执行类似的操作可以看出这一点:
>>> type(None)
<type 'NoneType'>
因此,当您将此对象放在列表中时,列表中只有一个元素。
Python中的赋值运算符=
用于将名称附加到对象。对于不可变对象(如整数),可以将多个名称附加到同一对象。这就是您使用a
和b
所做的事情。因此,当您使用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
用于检查x
和y
是否是相同的对象。
这里,c
和d
指向不同的列表对象。
所以,
>>>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