How to switch position of two items in a Python list?
Become part of the top 3% of the developers by applying to Toptal https://topt.al/25cXVn
--
Track title: CC E Schuberts Piano Sonata D 784 in A
--
Chapters
00:00 Question
00:49 Accepted answer (Score 476)
01:01 Answer 2 (Score 212)
01:22 Answer 3 (Score 18)
01:52 Answer 4 (Score 8)
02:09 Thank you
--
Full question
https://stackoverflow.com/questions/2493...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #list
#avk47
--
Track title: CC E Schuberts Piano Sonata D 784 in A
--
Chapters
00:00 Question
00:49 Accepted answer (Score 476)
01:01 Answer 2 (Score 212)
01:22 Answer 3 (Score 18)
01:52 Answer 4 (Score 8)
02:09 Thank you
--
Full question
https://stackoverflow.com/questions/2493...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #list
#avk47
ACCEPTED ANSWER
Score 495
i = ['title', 'email', 'password2', 'password1', 'first_name',
'last_name', 'next', 'newsletter']
a, b = i.index('password2'), i.index('password1')
i[b], i[a] = i[a], i[b]
ANSWER 2
Score 223
The simple Python swap looks like this:
foo[i], foo[j] = foo[j], foo[i]
Now all you need to do is figure what i is, and that can easily be done with index:
i = foo.index("password2")
ANSWER 3
Score 19
Given your specs, I'd use slice-assignment:
>>> L = ['title', 'email', 'password2', 'password1', 'first_name', 'last_name', 'next', 'newsletter']
>>> i = L.index('password2')
>>> L[i:i+2] = L[i+1:i-1:-1]
>>> L
['title', 'email', 'password1', 'password2', 'first_name', 'last_name', 'next', 'newsletter']
The right-hand side of the slice assignment is a "reversed slice" and could also be spelled:
L[i:i+2] = reversed(L[i:i+2])
if you find that more readable, as many would.
ANSWER 4
Score 8
How can it ever be longer than
tmp = my_list[indexOfPwd2]
my_list[indexOfPwd2] = my_list[indexOfPwd2 + 1]
my_list[indexOfPwd2 + 1] = tmp
That's just a plain swap using temporary storage.