Почему результат отличается в обоих случаях? - PullRequest
0 голосов
/ 04 мая 2020

Посмотрите на следующий код:

a = [1, 2, 3]
# a is a reference to an object of type 'list'
b = [1, 2, 3]
# b is a reference to an object of type 'list'
print(a is b)

Выход: False

a = (1, 2, 3)
# a is a reference to an object of type 'tuple'
b = (1, 2, 3)
# b is a reference to an object of type 'tuple'
print(a is b)

Выход: True

Почему выход отличается в обоих случаи? Имеет ли какое-либо отношение к этому изменяемая или неизменяемая структура?

Ответы [ 4 ]

0 голосов
/ 04 мая 2020

it is false and it is same for both lists and tupless

if a=[1,2,3]

и b = a, тогда a is b дает true

, если a = [1,2,3] и b = [1,2,3] тогда a is b дает true

одинаково для списков и кортежей

0 голосов
/ 04 мая 2020

Оператор 'is' - оценивается как true, если переменные по обе стороны от оператора указывают на один и тот же объект, и false в противном случае. если это объясняет!?

Это должно помочь

0 голосов
/ 04 мая 2020

is сравнивает идентификаторы (которые являются адресами памяти в CPython), == сравнивает равенство.

a = [1, 2, 3]
# a is a reference to an object of type 'list'
b = [1, 2, 3]
# b is a reference to an object of type 'list'
print(id(a), id(b))
print(hex(id(a)), hex(id(b)))
print(a is b)


a = (1, 2, 3)
# a is a reference to an object of type 'tuple'
b = (1, 2, 3)
# b is a reference to an object of type 'tuple'
print(hex(id(a)), hex(id(b)))
print(id(a), id(b))
print(a is b)
0 голосов
/ 04 мая 2020

если a и b указывают на один и тот же адрес, тогда a is b дает истину, даже если они не указывают на один и тот же адрес, если значения одинаковы, тогда a == b дает истину

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...