LINUX.ORG.RU

История изменений

Исправление 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 является единственным решением, учитывая условия, ведь нигде не сказано, что коллекция подобна питоньим спискам и поддерживает все их возможности (поэтому и ваше решение не совсем точная реализация идеи из-за использования срезов хотя бы).

Всем спасибо.