交换 python 列表中的元素,同时保留初始列表和交换列表

Swapping elements in python list preserving both the initial and swapped list

所以我尝试根据列表中 0 的位置交换 python 列表中的 2 个元素,然后比较原始列表和交换后的列表。我不希望它是就地排序,因此创建了一个名为 a 的新数组,它等于列表。但是,在执行我的原始列表下方给出的代码时,由于交换也发生了变化。

所以,我的代码是:

list=[1,2,3,8,0,4,7,6,5]
a=list
def move_up(list):
    n=list.index(0)
    if n>2:
        list[n],list[n-3]=list[n-3],list[n]
    return list

输出由

给出
print(move_up(a))
-> [1,0,3,8,2,4,7,6,5]

list
-> [1,0,3,8,2,4,7,6,5]

预期输出为

print(move_up(a))
-> [1,0,3,8,2,4,7,6,5]

list
-> [1,2,3,8,0,4,7,6,5]

在此先感谢您帮助我解决这个问题。

首先,不要命名一个列表'list'。 'List' 是 python 中的关键字。要解决你的问题,你应该做 -

a=ls.copy()

如果不这样做,在列表 'a' 中所做的任何更改都将反映在原始列表中所做的更改。

代码

ls=[1,2,3,8,0,4,7,6,5]
a=ls.copy()
def move_up(list1):
    n=list1.index(0)
    if n>2:
        list1[n],list1[n-3]=list1[n-3],list1[n]
    return list1

输出

>>print(move_up(a))
[1, 0, 3, 8, 2, 4, 7, 6, 5]

>>print(ls)
[1, 2, 3, 8, 0, 4, 7, 6, 5]