我的教授分配了一个项目,其中我们对列表进行了一系列更改。我们提供了一个主要功能,例如:
CURRENT_LIST = [1,2,3,4,5]
def main():
data = list(CURRENT_LIST)
shiftRight(data)
print("After shifting data", data)
基本上,我们必须编写处理main()
正在调用的这些函数的函数。我了解如何编写函数。例如,将所有内容向右移动将产生如下内容:
def shiftRight(data:list) -> (list):
data = data[-1:] + data[:-1]
return(data)
我的问题是:是否可以在不更改我们提供的main()
函数的情况下做到这一点?据我了解,调用shiftRight()
之后,我将不得不再次将其分配给列表。像这样:
data = shiftRight(data)
但是我们提供的主要功能并不是这样设置的。我想知道是否可以在不修改data
函数的情况下重新分配main()
列表。我也想避免使用全局变量,因为我认为这不是我教授的意图。
他在我们得到的main()
中犯了一个错误吗?还是真的有一种方法可以在不使用global variables
且不修改main()
的情况下修改此列表?
答案 0 :(得分:1)
您可以修改列表的内容,这将对变量所指向的原始列表进行更新,而不是创建一个新的列表:
DB::raw
答案 1 :(得分:0)
main
函数将查看CURRENT_LIST
,制作一个副本,然后调用该副本data
。然后,它将data
传递给名为shiftRight
的函数,该函数接受一个列表并对该列表执行右移。此函数对列表进行原位变异并返回None
(默认情况下,如果省略return
语句,则会发生此情况)。然后main
打印结果。
在分配def shiftRight...
之后,应该将您拥有的main
放在CURRENT_LIST
函数之外。您还需要调整shiftRight
函数以使传递的列表发生变异,而不是创建并返回一个新列表。尝试使用pop
和insert
列表方法。