diff --git a/translations/README-ru.md b/translations/README-ru.md index 95cf37e..750dc2e 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -2843,3 +2843,45 @@ NameError: name '_another_weird_name_func' is not defined ``` --- + + +### ▶ Все ли отсортировано? * + + + +```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], []) + ``` + +---