python中none什么意思,关于列表:python中[None]和[]之间的区别是什么?

本文探讨了Python中None、空列表的区别,以及列表的相等性和身份比较。None是一个特殊的对象,而空列表是一个不包含元素的列表。在使用is检查时,None和空列表会产生不同的结果,因为is检查的是对象身份,而==检查的是对象内容的相等性。此外,文章还介绍了Python中赋值操作符的影响,以及小整数对象的缓存机制。
摘要由CSDN通过智能技术生成

本问题已经有最佳答案,请猛点这里访问。

我认为[没有]和[没有]是一样的,但在我的测试中,也许有什么…

>>>print len([])

0

>>>print len([None])

1

我什么时候应该使用"无"?和[]

还有一个有趣的问题

>>>c= []

>>>d= []

>>>print c is d

False

>>>a= 1

>>>b=1

print a is b

True

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

1。[]—一个列表,其中包含任何项目。[None]—包含None对象的列表。

2。您需要使用==而不是is来检查相等性。使用is检查身份(对于单体物体,如None、True、False)

@错误:那些不要求更多信息或建议改进的,所以不应该是评论。

is检查两个变量是否指向同一对象,而==检查变量引用的对象是否相等。参见stackoverflow.com/questions/132988/…

stackoverflow.com/questions/13805882/…

我认为否决这样一个问题是不公平的…+1到偶数。

使用"无"还是空列表取决于您的应用程序。你有什么特别想做的吗?

下次,请通过谷歌做基础研究。像"python what is none"和"python list is list"这样的查询将返回非常有用的结果。事实上,前者的第一个结果是链接副本,后者的第一个结果是这个,这是对列表身份比较的完美解释。

[]是一个空列表

[None]是一个包含一个元素的列表。其中一个元素是None。

is检查参考等式。如果两个对象都引用同一个对象,那么is将返回true。

a = []

b = a

a is [] #false

a is b  #true

None是一个有效的元素,但您可以将其视为存根或占位符。因此,即使只有一个None,它也算作列表中的一个元素。对于(相等)比较,不应使用is。使用==!

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

>>> 1900 is 1900

True

>>> a = 1900

>>> b = 1900

>>> a is b

False

>>> a, b = 1900, 1900

>>> a is b

True

例如,在这个问题中解释了这种相当奇怪的行为:为什么Python处理"1是1**2"与"1000是10**3"不同?

使用==时不会发生这种情况:

>>> a == b

True

>>> 1900 == 1900

True

正如人们所期望的。

问题1:

无是对象。它是"非类型"类型。这可以通过在终端中执行类似的操作看到:

>>> type(None)

所以,当你把这个对象放在一个列表中时,这个列表有一个元素。问题2:

python中的赋值操作符=用于将名称附加到对象。对于不可变对象(如整数),可以将多个名称附加到同一对象。这就是你对a和b所做的。因此,当您使用is操作符测试它们的身份时,您会看到这两个名称指向相同的对象。

或者,当您将一个名称附加到一个新创建的列表(使用[]操作符创建的)时,它每次都是一个不同的列表。

[None]并不意味着清单中没有任何内容。None是python中的一个关键字,具有特殊的含义。在其他语言中,它类似于NIL或NULL。

当你说[None]的时候,你是说"我想要一个列表,其中包含一个特殊的对象,叫做None"。这不同于"我想要一个不包含元素的列表"(通过键入[])。

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

[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

实际上,这里有一个技巧是在Python中的原语上使用。因为Python中的所有内容都是一个对象,所以即使是ints也是。之所以1为1将返回true,是因为出于性能原因,python缓存小整数对象。Try 10000000是10000000,它将返回false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值