在列表中搜索项目[重复]

Posted

技术标签:

【中文标题】在列表中搜索项目[重复]【英文标题】:Searching for items in a list [duplicate] 【发布时间】:2014-04-21 20:57:19 【问题描述】:

我想说的是,如果它不是这些运算符之一,那么它应该运行if 语句。

if item is ("(" , "+" , "*" , "/" , ")" , "–") == False:

是我目前拥有的,但它不起作用。我应该如何编写它才能使其工作?

【问题讨论】:

永远不要使用is 运算符来比较元组或字符串。 【参考方案1】:

你想要这个:

if item not in ("(" , "+" , "*" , "/" , ")" , "–"):

还有:

您以完全错误的方式使用is 运算符。如果你想检查两件事是否“相等”,就像“相同的字符串/值/...”一样,永远不要使用它。仅用它来测试两件事是否真的相同。作为初学者,您真正需要此功能的唯一情况是测试某事物是否为None(例如foo is Nonefoo is not Nonefoo == Truefoo == False 是你真的不想在 Python 中使用的东西。只需改用foonot foo。 请阅读(并关注!)Python style guide (PEP8)!

【讨论】:

【参考方案2】:

您想在此处使用not in 运算符:

if item not in ("(", "+", "*", "/", ")", "–"):

is 运算符用于测试对象的身份。下面是一个演示:

>>> class Foo:
...     pass
...
>>> f1 = Foo()  # An instance of class Foo
>>> f2 = Foo()  # A different instance of class Foo
>>> f3 = f1     # f3 refers to the same instance of class Foo as f1
>>> f1 is f3
True
>>> f1 is f2
False
>>>

【讨论】:

【参考方案3】:

虽然到目前为止发布的答案是正确的,但它们可以更简单。

if item not in "(+*/.)-": ...

与列表版本一样有效。这与以下原理相同:

>>> x = "Hello, world"
>>> "Hello" in x
True
>>> "H" in x
True
>>> y = "+"
>>> y in "(+*/.)-"
True

这样做的原因是字符串是可迭代的,就像列表一样,所以in 操作符可以正常工作。

【讨论】:

【参考方案4】:

试试:

if item not in ["(" , "+" , "*" , "/" , ")" , "–"]:
    ...
    ...
    ...
else:
    ...

您也可以使用字符串使其更短:

if item not in "(+*/)–":
    ...
    ...
    ...
else:
    ...

但前提是您的项目是单个字符。

【讨论】:

【参考方案5】:

试试if item not in ["(" , "+" , "*" , "/" , ")" , "–"]:

【讨论】:

以上是关于在列表中搜索项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

android studio中的搜索查询无法正常工作

使用 Perl 在列表列表中搜索项目

合并包含在一个大列表中的重复项目的列表

在列表中搜索项目并在 python 中返回 x 个周围项目

向列表中添加新项目时的 SectionList 重复项目(也在 FlatList 中)

在创建视图的片段期间为项目列表中的每个项目设置图像[重复]