[] 和 [None] 有什么差别吗?

2019-08-30 17:54:33 +08:00
 miniyao

布尔值的比较是不相同的,在 for 循环的使用中也遇到过坑。foo 可能为空,用 for i in [] 是可以的,for i in [None] 把程序搞崩了。

>>> [] == [None]
False
2392 次点击
所在节点    Python
8 条回复
swcsend
2019-08-30 18:04:42 +08:00
[None] 表示列表里面有一个 None
[] 表示列表里面没有元素
ClutchBear
2019-08-30 18:15:22 +08:00
for i in [None]
如果有这种情况, 应该增加一个判断
if i is None: continue
GeruzoniAnsasu
2019-08-30 18:20:34 +08:00
let l1 = []
let l2 = [None]

len(l1) == 0
len(l2) == 1

l1[0] ==> IndexError: list index out of range
l2[0].__class__ ==> <class 'NoneType'>

none2 = l2[0].__class__()
none2 is None ==> True
mixure
2019-08-30 18:37:10 +08:00
代码上下文呢?
Hstar
2019-08-30 18:48:58 +08:00
关键错误在于 for 循环内部不要 if i 这样判断,多一次 if i is None 筛选。
CEBBCAT
2019-08-30 19:59:45 +08:00


楼主该恶补基本功啦
jmc891205
2019-08-30 20:07:40 +08:00
空列表和包含一个 None 的列表肯定有区别啊
否则,[], [None],[None, None], [None for i in range(10000)]都没有区别吗
wangxiaoshan
2019-09-11 12:09:58 +08:00
空列表可以简单通过两个中括号[]表示,表示里面什么东西都没有。
None 是 python 的内建值,含义是“这里什么也没有‘。比如如果要初始化一个长度 X 的序列,就需要让每个编码位置上都是空值,此时需要一个值代表空置,即里面没有任何元素,可以使用 None。
>>> a=[None]*5
>>>a
[None,None,None,None,None]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/596612

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX