列表在函数中更改

List changed in a function

我应该迭代地旋转列表,这意味着将第一个元素放在最后一个,其余元素向前移动直到回到原始列表。

这里是主要功能

a = input("Enter your list: ")
alist = a.split(' ')
alist = [int(alist[i]) for i in range(len(alist))]
origin = alist
rotate(alist, origin)

这是旋转函数体

def rotate(lst1, x):
        n = lst1.pop(0)
        lst1.append(n)
        print(lst1)
        print(x)
        if lst1 != x:
            rotate(lst1, x)

问题是为什么 'origin' 会随着 'lst1' 的变化而变化,我应该如何预防它。

问题是,当您执行 origin = alist 时,您实际上是在创建指向同一对象的指针,而不是创建列表的副本。 为了创建列表的副本,我建议您使用以下符号:

origin = alist[:]

通过这样做,您将创建另一个内部具有相同元素的对象,所以这是一个副本!