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

Python切片赋值是否要求赋值对象为同类型序列?

关于Python切片赋值的文档表述与实际行为的疑问解答

这既不是文档错误,也不是单纯的风格建议,而是你对文档表述的理解存在偏差。

Python官方文档里的这段表述措辞不够精准,实际规则是:赋值给切片的对象只要是可迭代对象即可,而非必须是同类型的序列。列表作为可变序列,在执行切片赋值时,会遍历右侧的可迭代对象,将其中的元素依次替换到切片对应的位置上。

你给出的测试代码完全符合这个规则:

x = [1,2,3,4,5]
x[1:3] = (8,9)  # 元组是可迭代对象,元素被逐个取出替换切片位置
print(x) # [1, 8, 9, 4, 5]
x[1:3] = "ab"   # 字符串是字符组成的可迭代对象,每个字符作为单独元素替换
print(x) # [1, 'a', 'b', 4, 5]

甚至你可以用其他类型的可迭代对象,比如生成器,一样能正常运行:

x[1:3] = (i*2 for i in range(2))
print(x) # [1, 0, 2, 4, 5]

文档里的表述可能是想重点强调“主表达式必须返回可变序列对象”(毕竟只有可变序列才能执行切片赋值操作),但关于赋值对象的描述不够准确,正确的要求是可迭代,而非严格同类型的序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:22:35