Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与列表中的另一项等效的python项_Python_Python 2.7_Python 3.x - Fatal编程技术网

与列表中的另一项等效的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'),它将与列表中的项完全相同,只是它将使中的语句

在python中,您可以检查项目是否在列表中:

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
,关键是在列表中考虑使用相同参数创建的实例。我认为,用一个实际的例子来说明如何正确使用它会是一个更好的答案