Python旧版本是否支持给列表切片直接赋值非可迭代整数?
问题解答
这种写法从来没有在Python的任意正式版本中支持过,不存在“后续版本迭代被废弃”的情况。
Python的列表切片赋值规则从语法诞生起就要求:等号右侧必须是可迭代对象,你遇到的报错是完全符合设计预期的。你记忆里的“类似写法可以运行”,大概率是和以下两种合法写法混淆了:
- 单元素索引赋值:
lst[0] = 100,这种场景不需要右侧为可迭代对象,会直接替换对应位置的元素 - 包装为可迭代对象的切片赋值:
lst[0:3] = [100],把单个值放在列表等可迭代容器中,就能实现你期望的效果:用可迭代对象里的1个元素替换切片覆盖的3个元素,最终输出[100, 'd']
你可以运行以下代码验证:
lst = ['a', 'b', 'c', 'd'] lst[0:3] = [100] print(lst)
以上代码在Python 2.x全系列、Python 3.x全系列正式版本中都可以正常运行,得到你期望的结果。反之直接给切片赋值非可迭代的整数,在所有Python正式版本中都会抛出类型错误。
内容的提问来源于stack exchange,提问作者codingsenpi
相关产品推荐
相关产品推荐

