python sagemath-修改作为输入传递的列表的随机选择
我正在用Sagemath 9.1编写代码 我有下面的MWE,在这里我定义了一个函数,将列表列表作为输入,它应该从输入中输出两个不同且不相交的列表。函数执行适当的操作,但是它修改作为输入传递的列表,即使第一行是它的副本,并且代码只使用副本 跑一次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,
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)