How can I go about swapping numbers in a given list?
For example:
list = [5,6,7,10,11,12]
I would like to swap 12
with 5
.
Is there an built-in Python function that can allow me to do that?
Best Answer
>>> lis = [5,6,7,10,11,12]>>> lis[0], lis[-1] = lis[-1], lis[0]>>> lis[12, 6, 7, 10, 11, 5]
Order of evaluation of the above expression:
expr3, expr4 = expr1, expr2
First items on RHS are collected in a tuple, and then that tuple is unpacked and assigned to the items on the LHS.
>>> lis = [5,6,7,10,11,12]>>> tup = lis[-1], lis[0]>>> tup(12, 5)>>> lis[0], lis[-1] = tup>>> lis[12, 6, 7, 10, 11, 5]
you can swap using this code,
list[0],list[-1] = list[-1],list[0]
You can use "*" operator.
my_list = [1,2,3,4,5,6,7,8,9]a, *middle, b = my_listmy_new_list = [b, *middle, a]my_list[1, 2, 3, 4, 5, 6, 7, 8, 9]my_new_list[9, 2, 3, 4, 5, 6, 7, 8, 1]
Read here for more information.
Use the index of the number you want to change.
In [38]: t = [5,6,7,10,11,12]In [40]: index5 = t.index(5) # grab the index of the first element that equals 5In [41]: index12 = t.index(12) # grab the index of the first element that equals 12In [42]: t[index5], t[index12] = 12, 5 # swap the valuesIn [44]: tOut[44]: [12, 6, 7, 10, 11, 5]
Then you can make a quick swapping function
def swapNumbersInList( listOfNums, numA, numB ):indexA = listOfNums.index(numA)indexB = listOfNums.index(numB)listOfNums[indexA], listOfNums[indexB] = numB, numA# calling the functionswapNumbersInList([5,6,7,10,11,12], 5, 12)
Another way (not so cute):
mylist = [5, 6, 7, 10, 11, 12]first_el = mylist.pop(0) # first_el = 5, mylist = [6, 7, 10, 11, 12]last_el = mylist.pop(-1) # last_el = 12, mylist = [6, 7, 10, 11]mylist.insert(0, last_el) # mylist = [12, 6, 7, 10, 11]mylist.append(first_el) # mylist = [12, 6, 7, 10, 11, 5]
array = [5,2,3,6,1,12]temp = ''lastvalue = 5temp = array[0]array[0] = array[lastvalue]array[lastvalue] = tempprint(array)
Hope this helps :)
This is what finally worked for me.
def swap(the_list):temp = the_list[0]the_list[0] = the_list[-1]the_list[-1] = tempreturn the_list