列表在函数中更改
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[:]
通过这样做,您将创建另一个内部具有相同元素的对象,所以这是一个副本!
我应该迭代地旋转列表,这意味着将第一个元素放在最后一个,其余元素向前移动直到回到原始列表。
这里是主要功能
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[:]
通过这样做,您将创建另一个内部具有相同元素的对象,所以这是一个副本!