Appending Array into different array N times (python)

Question:

For an assignment where we have to reverse bubble sort. After each movement of this sort we must store the array into a different array known as. The problem being is that the with each movement in Array A it automatically changes the array in the other array. IE giving an output like this

[[1, 3, 4, 6, 7, 8, 9, 10], [1, 3, 4, 6, 7, 8, 9, 10], [1, 3, 4, 6, 7, 8, 9, 10], [1, 3, 4, 6, 7, 8, 9, 10]]

When it should be doing an output like this:

[[1, 3, 4, 6, 10, 7, 9, 8], [1, 3, 4, 6, 7, 10, 8, 9], [1, 3, 4, 6, 7, 8, 10, 9][1, 3, 4, 6, 7, 8, 9, 10]]

Full code:

def alt_bubblesort(A: list, size: int) -> list:
    #Final array of arrays, stores each movement of the bubble sort
    masterList = []

    #placeholder variable
    holder = min(A)

    #puts the starting element at the start of the array
    A.remove(min(A))
    A.insert(0,holder)



    #Traverses the array
    for i in range(size):
        print(A)
        masterList.append(A)
        for j in reversed(range(1,size)):
            if A[j] < A[j-1]:
                A[j], A[j-1] = A[j-1], A[j]
Asked By: Tim McAllister

||

Answers:

I did not check whether the sorting algorithm is implemented correctly. But if I get your problem right, you can use copy.deepcopy:

import copy

...

for i in range(size):
    print(A)
    masterList.append(copy.deepcopy(A))  # This line has changed
    for j in reversed(range(1,size)):
        if A[j] < A[j-1]:
            A[j], A[j-1] = A[j-1], A[j]
Answered By: Jonathan Scholbach
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.