История изменений
Исправление Virtuos86, (текущая версия) :
отлично, давай рассуждать
t = {...: collection[oldindex - 1] for ...}
это перемещение элементов коллекции во внешнюю переменную.
это перемещение
Извини, ты хорошо знаешь семантику Python? В нем переменные - ссылки на объекты, и в моем коде и словарь t, и результирующая коллекция, список newcollection, будут содержать только ссылки на элементы коллекции collection. Копирование/перемещение не производится, появляются дополнительные ссылки. В этом можно убедиться, сравнив id элементов исходной и результирующей коллекций:
for oldindex, newindex in permuts_pairs:
print id(collection[oldindex - 1]) == id(newcollection[newindex - 1]),
Конечно, это специфика Python, а не достоинство использованного «алгоритма».
Конечно же, алгоритм qulinxao является единственным решением, учитывая условия, ведь нигде не сказано, что коллекция подобна питоньим спискам и поддерживает все их возможности (поэтому и ваше решение не совсем точная реализация идеи из-за использования срезов хотя бы).
Всем спасибо.
Исходная версия Virtuos86, :
отлично, давай рассуждать
t = {...: collection[oldindex - 1] for ...}
это перемещение элементов коллекции во внешнюю переменную.
это перемещение
Извини, ты хорошо знаешь семантику Python? В нем переменные - ссылки на объекты, и в моем коде и словарь t, и результирующая коллекция, список newcollection, будут содержать только ссылки на элементы коллекции collection. Копирование не производится. В этом можно убедиться, сравнив id элементов исходной и результирующей коллекций:
for oldindex, newindex in permuts_pairs:
print id(collection[oldindex - 1]) == id(newcollection[newindex - 1]),
Конечно, это специфика Python, а не достоинство использованного «алгоритма».
Конечно же, алгоритм qulinxao является единственным решением, учитывая условия, ведь нигде не сказано, что коллекция подобна питоньим спискам и поддерживает все их возможности (поэтому и ваше решение не совсем точная реализация идеи из-за использования срезов хотя бы).
Всем спасибо.