Если у меня есть список, [a,b,c,d,e]
как я могу изменить порядок элементов произвольным образом, например [d,c,a,b,e]
?
Изменить: я не хочу их перемешивать. Я хочу переупорядочить их заранее определенным образом. (например, я знаю, что 3-й элемент в старом списке должен стать первым элементом в новом списке)
Ответы:
Вы можете сделать это так
источник
mylist[:] = [mylist[i] for i in myorder]
источник
источник
Окончательный порядок определяется списком индексов?
редактировать: мех. AJ был быстрее ... Как я могу изменить порядок списка в Python?
источник
источник
Вы можете предоставить свою собственную функцию сортировки, чтобы
list.sort()
:источник
Если вы используете numpy, есть отличный способ сделать это:
Этот код возвращает:
источник
Если вы не заботитесь об эффективности, вы можете положиться на индексирование массива numpy, чтобы сделать его элегантным:
источник
Насколько я понимаю ваш вопрос, похоже, вы хотите применить перестановку, указанную вами в файле
list
. Это делается путем указания другогоlist
(назовем егоp
), который содержит индексы элементов оригинала,list
которые должны появиться в перестановкеlist
. Затем вы используетеp
для создания новогоlist
, просто заменяя элемент в каждой позиции тем, чей индекс находится в этой позиции вp
.Это печатает
['d', 'c', 'a', 'b', 'e']
.Фактически это создает новый
list
, но его можно тривиально изменить, чтобы переставить оригинал «на место».источник
Еще одна вещь, которую можно принять во внимание, - это другая интерпретация, указанная darkless
Код на Python 2.7
В основном:
Изменить порядок по индексу
Это напечатает ['c', 'd', 'b', 'a', 'e']
источник
источник
Это то, что я использовал, когда наткнулся на эту проблему.
EX: для строчных букв
Он просто перемещает список по указанному индексу
источник