Não consegui encontrar uma boa solução para esse problema na rede (provavelmente porque switch, position, list e Python são todas essas palavras sobrecarregadas).
É bastante simples - eu tenho esta lista:
['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
Eu gostaria de mudar de posição 'password2'
e 'password1'
- sem saber a posição exata, apenas que eles estão próximos um do outro e password2
são os primeiros.
Consegui isso com algumas assinaturas de listas bastante longas, mas imaginei que seria possível criar algo um pouco mais elegante?
Respostas:
fonte
A troca simples do Python é assim:
Agora tudo o que você precisa fazer é descobrir o que
i
é e isso pode ser feito facilmente comindex
:fonte
Dadas as suas especificações, eu usaria a atribuição de fatias:
O lado direito da atribuição da fatia é uma "fatia invertida" e também pode ser escrito:
se você achar isso mais legível, como muitos acham.
fonte
Como pode ser mais longo do que
Isso é apenas uma troca simples usando armazenamento temporário.
fonte
my_list[indexOfPwd2],my_list[indexOfPwd2+1] = my_list[indexOfPwd2+1],my_list[indexOfPwd2]
como resultado, se o último elemento for maior que o elemento na posição
i
, os dois serão trocados.fonte
você pode usar, por exemplo:
fonte
Eu não sou especialista em python, mas você pode tentar: digamos
acima daria o / p como:
fonte