Вы не сможете сделать это без некоторого вида l oop. В python из in
нет эквивалентного оператора, который проверяет идентичность. Краткое решение может выглядеть следующим образом:
l = [1,2,3]
l2 = [[1, 2, 3], [4, 5, 6]]
l3 = [[1, 2, 3], [4, 5, 6], l]
any(l is sub for sub in l2)
# false
any(l is sub for sub in l3)
# True
Это все еще циклы, но он выйдет рано, если будет найдено истинное значение.
Если вам действительно нужно используйте оператор для этого, вы можете создать подкласс UserList
и переопределить __contains__()
. Это изменит поведение in
:
from collections import UserList
class identList(UserList):
def __contains__(self, other):
return any(other is sub for sub in self)
l = [1,2,3]
l2 = identList([[1, 2, 3], [4, 5, 6]])
l3 = identList([[1, 2, 3], [4, 5, 6], l])
l in l2
# False
l in l3
# True