1
0
mirror of https://github.com/satwikkansal/wtfpython synced 2024-11-21 18:54:20 +01:00

Translate All sorted? example

This commit is contained in:
Vadim Nifadev 2024-04-24 11:39:29 +03:00
parent 8f60bc1d0b
commit f84272fc5c

View File

@ -2843,3 +2843,45 @@ NameError: name '_another_weird_name_func' is not defined
```
---
### ▶ Все ли отсортировано? *
<!-- Example ID: e5ff1eaf-8823-4738-b4ce-b73f7c9d5511 -->
```py
>>> x = 7, 8, 9
>>> sorted(x) == x
False
>>> sorted(x) == sorted(x)
True
>>> y = reversed(x)
>>> sorted(y) == sorted(y)
False
```
#### 💡 Объяснение:
- Метод `sorted` всегда возвращает список, а сравнение списка и кортежа всегда возвращает `False`.
- ```py
>>> [] == tuple()
False
>>> x = 7, 8, 9
>>> type(x), type(sorted(x))
(tuple, list)
```
- В отличие от метода `sorted, метод `reversed` возвращает итератор. Почему? Потому что сортировка требует, чтобы итератор либо изменялся на месте, либо использовал дополнительный контейнер (список), в то время как реверсирование может работать просто путем итерации от последнего индекса к первому.
- Поэтому при сравнении `sorted(y) == sorted(y)` первый вызов `sorted()` будет потреблять итератор `y`, а следующий вызов просто вернет пустой список.
```py
>>> x = 7, 8, 9
>>> y = reversed(x)
>>> sorted(y), sorted(y)
([7, 8, 9], [])
```
---