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

问题描述 投票:0回答:2

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

所以,我的代码由:]提供

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]

感谢您帮助我解决此问题。

因此,我试图根据列表中0的位置交换python列表中的2个元素,然后比较原始列表和交换后的列表。我不希望它是就地排序,因此...

python-3.x list methods global-variables swap
2个回答
0
投票

您可以在nn - 3处分割列表,并将分割后的列表和交换的项目合并到新列表中:

def move_up(lst):
    n = lst.index(0)
    if n > 2:
        return [*lst[:n - 3], lst[n], *lst[n - 2: n], lst[n - 3], *lst[n + 1:]]
    return lst

0
投票

首先,不要将列表命名为“列表”。 “列表”是python中的关键字。要解决您的问题,您应该-->

a=ls.copy()

© www.soinside.com 2019 - 2024. All rights reserved.