Как список сравнивается с другим списком? - PullRequest
0 голосов
/ 29 апреля 2020

В первой части у меня есть 2 списка, которые равны, но не отсортированы. Когда я проверяю, равны ли они, функция печати возвращает «False», что имеет смысл.

listx1, listx2=[9, 7, 5, 3], [3, 5, 7, 9] 
print(listx1 == listx2)     #returns False

Когда я сортирую этот список, функция печати возвращает «True». До этого момента я понимал:

print(listx1.sort() == listx2.sort())   #returns True

Теперь я использую 2 неравных списка и сравниваю их. На этот раз также функция print возвращает False, что имеет смысл.

listx3, listx4 =[5, 3, 2, 7], [3, 5, 7, 9]
print(listx3 == listx4)              #returns False

Но не должен ли я получить "False" при проверке их равенства, даже после сортировки (учитывая, что они состоят из неравных элементов)? Здесь я запутался, потому что после сортировки listx3 и listx4 функция печати возвращает «True». (согласно приведенному ниже коду)

print(listx3.sort() == listx4.sort())     #returns True

Где я ошибаюсь в своем понимании?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2020

listx1.sort() сортирует список на месте и возвращает None, как и все функции и методы, которые не имеют заданного c возвращаемого значения. Итак, ваш тест:

listx1.sort() == listx2.sort()

на самом деле None == None, что соответствует действительности.

Что вы должны сделать, чтобы сравнить отсортированные списки:

listx1.sort()
listx2.sort()
list1 == list2
1 голос
/ 29 апреля 2020

Метод .sort() работает со списком на месте и ничего не возвращает. Встроенная функция sorted() возвращает новую отсортированную копию списка. Если вы используете:

sorted(listx3) == sorted(listx4)

, вы получите ожидаемый ответ.

В подобных случаях тестирование отдельных фрагментов кода в интерпретаторе Python поможет вам понять, что происходит. Например, если вы print(listx3.sort()) увидите, что он печатает None.

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