Переменная передаваемая в функцию изменяется вне её

Я передаю список queue в функцию Find_sequence, он изменяется внутри функции. Но если я вывожу его после вызова функции он тоже меняется, так ведь не должно быть?

def main():
    mid_bro = 5
    queue = [3,4,5,6,7,8,9]
    finded_sequence = Find_Sequence(queue,mid_bro)
    new_queue = queue
    print("new queue",new_queue)

def Find_Sequence(queue, mid_bro):
    sequence = []
    index_sequence = []
    print("undo queue",queue)
    while True:
        young_bro_info = Find_young_brother(mid_bro, queue)
        old_bro_info = Find_old_brother(mid_bro, queue)         
        if young_bro_info is not None:
            sequence.append(young_bro_info[1])
            index_sequence.append(young_bro_info[0])
            queue[young_bro_info[0]] = 0

            mid_bro = young_bro_info[1]

        elif old_bro_info is not None:
            sequence.append(old_bro_info[1])
            index_sequence.append(old_bro_info[0])
            queue[old_bro_info[0]] = 0

            mid_bro = old_bro_info[1]

        else:
            break
    print("after queue",queue)
    print("sequence",sequence)
    print("index sequence",index_sequence)
    return(sequence, index_sequence)

Я жду вывод:

undo queue [3, 4, 5, 6, 7, 8, 9]
after queue [0, 0, 5, 6, 7, 8, 9]
new queue [3, 4, 5, 6, 7, 8, 9]

А получаю:

undo queue [3, 4, 5, 6, 7, 8, 9]
after queue [0, 0, 5, 6, 7, 8, 9]
new queue [0, 0, 5, 6, 7, 8, 9]

Ответы (1 шт):

Автор решения: Gomagaba

Разобрался сам. Как я понял когда я пишу new_queue = queue я ссылаюсь на объект, а если написать new_queue = queue.copy() то я его копирую и уже не ссылаюсь.

→ Ссылка