交换 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]
所以我尝试根据列表中 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]