python sagemath-修改作为输入传递的列表的随机选择

python sagemath-修改作为输入传递的列表的随机选择,python,list,Python,List,我正在用Sagemath 9.1编写代码 我有下面的MWE,在这里我定义了一个函数,将列表列表作为输入,它应该从输入中输出两个不同且不相交的列表。函数执行适当的操作,但是它修改作为输入传递的列表,即使第一行是它的副本,并且代码只使用副本 跑一次 saved_big_list=[[1,2,3,4],[1,2,5,6],[5,6,7,8],[3,4,7,8]] test_function(saved_big_list) 如果我再次运行saved_big_list,Sagemath将返回[[1,2,

我正在用Sagemath 9.1编写代码

我有下面的MWE,在这里我定义了一个函数,将列表列表作为输入,它应该从输入中输出两个不同且不相交的列表。函数执行适当的操作,但是它修改作为输入传递的列表,即使第一行是它的副本,并且代码只使用副本

跑一次

saved_big_list=[[1,2,3,4],[1,2,5,6],[5,6,7,8],[3,4,7,8]]
test_function(saved_big_list)
如果我再次运行
saved_big_list
,Sagemath将返回
[[1,2,3,4],[1,2,5,6,3,4,7,8],[5,6,7,8],[3,4,7,8]
。该列表已被修改。如果我没有复制输入列表,我可以理解:我认为它是随机的。choice()在
big\u list
中返回一个列表(不是副本),当我更改此随机列表时,
big\u list
会受到影响

但是,为什么它会更改作为输入传递的列表?

请注意,如果我替换,问题就解决了

output = random_list
output += random_list

MWE:

import random

def test_function(big_list_input):

    big_list = list(big_list_input)
    output=list()

    random_list = random.choice(big_list)
    output = random_list

    big_list = [l for l in big_list if not intersection(l,random_list)]

    random_list = random.choice(big_list)
    output += random_list

    return(output)
import random

def test_function(big_list_input):

    big_list = list(big_list_input)
    output=list()

    random_list = random.choice(big_list)
    output = random_list

    big_list = [l for l in big_list if not intersection(l,random_list)]

    random_list = random.choice(big_list)
    output += random_list

    return(output)