Как уже отмечалось, y = x
дает вам ссылку, а не копию того же списка. Вам нужно сделать y = x.copy()
, чтобы получить требуемый результат.
Это поведение описано, например, в модуле копирования :
Операторы присваивания в Python не копируйте объекты, они создают привязки между целью и объектом. Для коллекций, которые являются изменяемыми или содержат изменяемые элементы, иногда требуется копия, чтобы можно было изменить одну копию, не изменяя другую.
Но кроме того, эта функция также дает вам результат:
print(sorted(sentence.split(), key=lambda e: min(e)))
Как видите, уже есть встроенная функция sorted()
, которая делает все, что вы хотите. Все, что вам нужно сделать, это предоставить собственную функцию сортировки. Предоставленная функция сортировки ищет минимальное значение слов в предложении. Это делается с помощью встроенной функции min()
.
Чтобы выполнить задачу, необходимо сделать один последний шаг: снова распечатать список в виде строки. Это можно сделать с помощью str.join()
, см .:
>>> sentence = "Matias3 I1 a2m"
>>> print(" ".join(sorted(sentence.split(), key=lambda e: min(e))))
I1 a2m Matias3