是否可以在函数外部更改列表?

时间:2019-04-22 04:46:18

标签: python function

我的教授分配了一个项目,其中我们对列表进行了一系列更改。我们提供了一个主要功能,例如:

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()的情况下修改此列表?

2 个答案:

答案 0 :(得分:1)

您可以修改列表的内容,这将对变量所指向的原始列表进行更新,而不是创建一个新的列表:

DB::raw

答案 1 :(得分:0)

main函数将查看CURRENT_LIST,制作一个副本,然后调用该副本data。然后,它将data传递给名为shiftRight的函数,该函数接受一个列表并对该列表执行右移。此函数对列表进行原位变异并返回None(默认情况下,如果省略return语句,则会发生此情况)。然后main打印结果。

在分配def shiftRight...之后,应该将您拥有的main放在CURRENT_LIST函数之外。您还需要调整shiftRight函数以使传递的列表发生变异,而不是创建并返回一个新列表。尝试使用popinsert列表方法。