与列表中的另一项等效的python项
在python中,您可以检查项目是否在列表中:与列表中的另一项等效的python项,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,在python中,您可以检查项目是否在列表中: if item in lst: do_stuff() 但是,如何检查列表中是否有类似的项目?is操作员检查实际对象。运算符中的也执行相同的操作。对于中的,是否有一个等价的==运算符 我想要的是 if item is_equal_to_another_in lst: do_stuff() 例如:我有一个[项目('a')、项目('b')、项目('c')]的列表。如果我创建另一个项('a'),它将与列表中的项完全相同,只是它将使中的语句
if item in lst:
do_stuff()
但是,如何检查列表中是否有类似的项目?is
操作员检查实际对象。运算符中的也执行相同的操作。对于
中的,是否有一个等价的==
运算符
我想要的是
if item is_equal_to_another_in lst:
do_stuff()
例如:我有一个[项目('a')、项目('b')、项目('c')]
的列表。如果我创建另一个项('a')
,它将与列表中的项完全相同,只是它将使中的语句失败,因为列表中的项是不同的实例 对于列表,\uuuu contains\uuuuuu
仅将对象与\uuuu eq\uuuu
(=
)运算符进行比较。如果未定义,则会转到is
考虑到您的项目
,您可能必须定义\uuuuuuuuueq\uuuuuuuuu
,以确定您对平等性的具体定义
在本例中,我演示了如何通过执行不区分大小写的比较,根据两个项目的attr
属性的值来比较这两个项目
>>> class item:
... def __init__(self,attr): self.attr = attr
... def __eq__(self,o): return isinstance(o, item) and self.attr.lower() == o.attr.lower()
...
>>> lst = [item("a"), item("b")]
>>> item("A") in lst
True
>>> item("a") in lst
True
>>> item("B") in lst
True
>>> item("C") in lst
False
>>> "A" in lst
False
对于列表,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果未定义,则会转到is
考虑到您的项目
,您可能必须定义\uuuuuuuuueq\uuuuuuuuu
,以确定您对平等性的具体定义
在本例中,我演示了如何通过执行不区分大小写的比较,根据两个项目的attr
属性的值来比较这两个项目
>>> class item:
... def __init__(self,attr): self.attr = attr
... def __eq__(self,o): return isinstance(o, item) and self.attr.lower() == o.attr.lower()
...
>>> lst = [item("a"), item("b")]
>>> item("A") in lst
True
>>> item("a") in lst
True
>>> item("B") in lst
True
>>> item("C") in lst
False
>>> "A" in lst
False
这听起来像是你必须手动做的事情。什么是item(“a”)
?@padraiccnningham这只是创建objectwell的一个例子如果它们是类的实例,你可以有一个name属性,然后检查(item(“a”)。name==x.name代表items中的x)
或任何a
代表的东西让你认为在
中只使用is
进行比较?这听起来像是你必须手动做的事情。什么是项(“a”)
?@padraiccnningham这只是创建objectwell的一个示例,如果它们是类的实例,则可以有一个name属性,然后检查如果有(item(“a”).name==x.name代表items中的x)
或任何a
表示的内容,使您认为in
仅使用is
进行比较?但c
不在列表中,重点是在列表中考虑使用相同参数创建的实例。我认为,一个如何正确使用该参数的实际示例将是一个更好的答案,但是列表中没有c
,关键是在列表中考虑使用相同参数创建的实例。我认为,用一个实际的例子来说明如何正确使用它会是一个更好的答案