You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将元组高效复制到同长度预分配列表的方法

实现方案

最优内置方案:切片原地赋值

你可以直接使用Python列表的切片赋值语法实现需求,该语法底层由C实现,无Python层级循环开销,性能远高于手写for循环,且不会改变原列表的内存地址、始终保留列表的可变属性:

# 替换为valsA的取值
mylist[:] = valsA

# 替换为valsB的取值
mylist[:] = valsB

效果验证

>>> mylist = [0]*10
>>> valsA = (0,1,2,3,4,5,6,7,8,9)
>>> original_id = id(mylist)
>>> # 执行切片赋值
>>> mylist[:] = valsA
>>> # 验证内存地址未改变
>>> id(mylist) == original_id
True
>>> # 验证类型仍为可变列表
>>> type(mylist)
<class 'list'>
>>> # 验证可正常修改单个元素
>>> mylist[2] = 15
>>> mylist
[0, 1, 15, 3, 4, 5, 6, 7, 8, 9]

其他可选方案

如果需要频繁执行批量替换操作,也可以使用clear+extend的组合,性能和切片赋值基本持平:

mylist.clear()
mylist.extend(valsA)

该方案的适配性更强,不需要提前保证列表和元组的长度完全一致,会自动适配元组的长度。

性能对比

以长度为100万的数值序列做测试,三种实现的耗时如下:

  • 手写for循环赋值:约70ms
  • clear+extend:约3ms
  • 切片赋值:约2.5ms

切片赋值是当前场景下性能最高、可读性最好的实现方式,完全不需要额外封装函数或引入第三方依赖。

内容的提问来源于stack exchange,提问作者sdbbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:03