Python中使用元组返回大列表时,是复制列表还是引用?
Python中元组存储列表是复制内容还是仅引用?
我想在Python方法里返回一个列表和状态码,打算用元组实现,因为它简洁。但列表可能很大,如果存元组时要复制内容会有性能问题,所以想问:Python里把列表放进元组时,是复制列表内容,还是只引用列表?
示例代码:
response = requests.get(self.base_url) my_list = ast.literal_eval(response.text) # 把字符串字面量转成列表 return (response, my_list)
回答:
Python里元组存储列表时,只会保存列表的引用,不会复制列表的内容。
- 元组的本质是存储对象引用的序列,不管你放进去的是可变对象(比如列表、字典)还是不可变对象(比如整数、字符串),元组里存的都是指向这些对象的引用,不会额外复制对象本身的数据。
- 你写的示例代码里,
return (response, my_list)这句创建的元组,只会把my_list的引用存进去,完全不会复制那个大列表的内容,所以不用担心性能损耗。 - 唯一要注意的是:如果后续你修改了
my_list指向的原列表内容,元组里的对应元素(因为是引用关系)也会跟着变化。不过如果只是返回结果供调用方使用,一般不会有这类问题。
内容的提问来源于stack exchange,提问作者arthurIsVibing
相关产品推荐
相关产品推荐

