列表构成的元组切片操作结果不符预期的原因及实现方法
问题原因
你的切片写法tuplun[0:][1:]是按从左到右的顺序执行的,逻辑如下:
- 首先执行
tuplun[0:]:对原元组做全量切片,返回和原元组完全一致的新元组:(["one", "two", "three"], ["hello", "scope"], ["pedro"]) - 再对上述返回的新元组执行
[1:]切片:取索引为1及之后的所有元素,最终得到你看到的实际输出(['hello', 'scope'], ['pedro'])
你原本的预期是单独修改元组内第一个列表的切片结果,再和元组剩余元素组合,这个需求没法通过连续的元组外层切片实现。
实现预期输出的方法
直接构造新元组即可,将第一个列表的切片结果和原元组从索引1开始的剩余元素做拼接:
tuplun = (["one", "two", "three"], ["hello", "scope"], ["pedro"]) # 注意单元素元组末尾的逗号不能省略,否则会被识别为列表类型无法拼接 res = (tuplun[0][1:],) + tuplun[1:] print(res)
运行后输出即为你期望的(["two", "three"], ["hello", "scope"], ["pedro"]).
内容的提问来源于stack exchange,提问作者Christian Sama
相关产品推荐
相关产品推荐

