==
Базовый будет проверять только тогда, когда каждый элемент в одном list
равен соответствующему элементу в другом list
. Однако, учитывая ваш пример lst = [[<object1 at 0x04130AB0>], [<object2 at 0x04130210>, <object3 at 0x04130A10>]]
, вы пытаетесь проверить личность. Два объекта с разными идентичностями могут сравниваться как «равные», в зависимости от определения этого класса. Вот некоторые примеры, где ==
бы вам сказать, что два list
s содержат одни и те же объекты в том же порядке, когда они этого не делают:
>>> import collections
>>> a = collections.Counter()
>>> b = collections.Counter()
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> l1 == l2
True
>>> class Person:
... def __eq__(self, other):
... return True
...
>>> a = Person()
>>> b = Person()
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> l1 == l2
True
>>> a = []
>>> b = []
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> l1 == l2
True
>>> a.append(0)
>>> l1 == l2
False
Если вы хотите, чтобы проверить, что соответствующие элементы на самом деле тот же объект (личность, а не равенство), вам нужно будет вручную сравнить идентичностей каким-либо образом, например, следующее:
>>> import collections
>>> a = collections.Counter()
>>> b = collections.Counter()
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> all(x is y for x,y in zip(l1, l2))
False
>>> a = Person()
>>> b = Person()
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> all(x is y for x,y in zip(l1, l2))
False
>>> a = []
>>> b = []
>>> a is b
False
>>> l1 = [a, b]
>>> l2 = [b, a]
>>> all(x is y for x,y in zip(l1, l2))
False
это объект не строка ... я буду иметь ссылки что-то вроде списка = [[] , [, ]] –
FryMan
@FryMan, какой бы тип данных ни был, он должен работать. Это список списков? –
да, это список списков – FryMan