Python 常用指令 not 和 is None的区别
程序员文章站
2022-05-03 08:23:35
...
在刷这道题的时候遇到一个关于not和is None 的小小问题。这道题目是利用stack的 last in first out 原理来判断最近的两对括号是否符合文本的要求。
//判断括号是否是符合要求
//Given a string containing just the characters '(', ')', '{', '}', '[' and ']',
//determine if the input string is valid.
//The brackets must close in the correct order.
def isValid (input_)
input_ = list(input_)
if not input or len(input) == 0:
return False
valid = {"(":")", "[":"]", "{":"}"}
left_bracket = []
for b in input_:
if b in valid:
left_bracket.append(b)
elif not left_bracket or valid[left_bracket[-1]] is not b:
// 这里同样不能用 is None
return False
else:
//it is match and move on to next element
left_bracket.pop()
return not left_bracket // left_bracket is None
这里之所以最后一步不是直接return true的原因,是因为如果left_bracket里面还剩下一个左括号,还是不符合要求,因为没有对应的右括号与之对应。
好了那么问题来了,问题就出在这个is None 和 not该用哪个。用 is None的时候结果不是预期结果,如果left_bracket 是空,is None仍然返回的是false。
问题就在于not 判断的是对象是否为空,不代表对象无定义比如list。而is None注重的是对象是否有定义。此处list为空仍然是具有定义的所以应该用not 判断。
上一篇: Activity转场动效
下一篇: Android动画总结 (valueAnimator、objectAnimator、AnimatorSet、PropertyValuesHolder、Interpolator)
推荐阅读
-
Python 2.7.x 和 3.x 版本的重要区别小结
-
python 中readline 和readlines的区别
-
详解Python中__str__和__repr__方法的区别
-
【面试题1】python:urllib和requests的区别
-
Python中send()和sendall()的区别
-
本地存储常用方式 localStorage, sessionStorage,cookie 的区别 和 服务器存储session
-
python正则表达式函数match()和search()的区别详解
-
对python中dict和json的区别详解
-
python面试题Python2.x和Python3.x的区别
-
基于python中staticmethod和classmethod的区别(详解)