我有一个元组形式的点列表:
myList = [(1,1), (2,2), (3,3), (4,4), (5,5)]
我想用新元组(6,6)
替换一段可变长度,结果如下:
myList = [(1,1), (6,6), (5,5)]
我尝试将元组分配给切片,但这会解压缩元组。
startIndex = 1
endIndex = 3
newTuple = (6,6)
myList[startIndex:endIndex] = newTuple
#myList == [(1, 1), 6, 6, (4, 4), (5, 5)]
我目前的方法如下,但我想知道是否有办法绕过这种自动解包,以及是否有更好或更可读的方法来做到这一点。
myList[startIndex] = newTuple
del myList[startIndex+1:endIndex]
答案 0 :(得分:1)
你需要在列表中包装你的元组(一个值):
${IfThen} 0x29A = 666 ${|} DetailPrint "True" ${|} ; 0x29A is 666 in hex
${IfThen} 0x29A == 666 ${|} DetailPrint "This will never print" ${|}
切片赋值始终遍历右侧对象;你正在用另一个索引替换一个索引列表。
从作业声明文件:
最后,要求序列对象将切片替换为指定序列的项。切片的长度可能与指定序列的长度不同,因此如果对象允许,则改变目标序列的长度。
由于您提供了一个简单元组,因此元组中的元素用于替换切片索引。通过将其包装在列表中,您的元组是该列表中的一个元素,并且本身不会进一步解压缩:
myList[startIndex:endIndex] = [newTuple]
答案 1 :(得分:0)
>>> myList = [(1,1), (2,2), (3,3), (4,4), (5,5)]
>>> myList[1:4] = [(6,6)]
>>> myList
[(1, 1), (6, 6), (5, 5)]