在列表中搜索项目
问题原因:代码中使用了错误的运算符,未正确判断item是否在一个列表中。
解决方法:使用正确的运算符判断item是否在列表中,并遵循Python的代码风格指南。
这是一个问题的例子:
if item not in ("(" , "+" , "*" , "/" , ")" , "–"):
另外:
- 你错误地使用了
is
运算符。如果你想检查两个东西是否“相等”,永远不要使用它。只有在测试是否为None
时才需要使用它(例如:foo is None
,foo is not None
)。 foo == True
和foo == False
不应在Python中使用。可以直接使用foo
和not foo
。- 请阅读(并遵循!)Python的代码风格指南(PEP8)。
解决方法:将代码修改为正确的形式,使用in
运算符判断item是否在列表中,并遵循Python的代码风格指南。
搜索列表中的项目
问题的原因:在代码中,我们想要判断一个项目是否不在一个列表中,但是使用了错误的运算符。我们应该使用not in
运算符来完成这个判断,而不是is
运算符。
解决方法:将代码修改为使用not in
运算符进行判断:
if item not in ("(", "+", "*", "/", ")", "–"):
下面是关于is
运算符的示例演示:
>>> class Foo: ... pass ... >>> f1 = Foo() # 类Foo的一个实例 >>> f2 = Foo() # 类Foo的另一个实例 >>> f3 = f1 # f3引用了类Foo的同一个实例,与f1相同 >>> f1 is f3 True >>> f1 is f2 False >>>
在寻找列表中的项目时,出现这个问题的原因是因为字符串也可以像列表一样进行迭代操作。解决方法是使用in
操作符来判断一个项目是否在字符串中。
所以,我们可以使用以下代码来判断一个项目是否在字符串中:
if item not in "(+*/.)-": ...
这种方法的原理是,字符串可以像列表一样进行迭代操作,所以in
操作符的使用和在列表中一样。
以下是一个例子来说明这个方法的工作原理:
>>> x = "Hello, world" >>> "Hello" in x True >>> "H" in x True >>> y = "+" >>> y in "(+*/.)-" True
在这个例子中,我们可以看到字符串x
中有子字符串"Hello"和字符"H",所以in
操作符返回了True。同样地,在字符串"(+*/.)-"
中有字符"+",所以in
操作符也返回了True。
通过使用in
操作符来判断一个项目是否在字符串中,我们可以更简单地解决寻找列表中项目的问题。