Python中不删除重插元素如何调整列表内对象的索引位置
解决方案
直接对目标列表做原地切片赋值即可,不需要执行单元素删除、插入操作,全程保留所有原有元素对象,适配Kivy的Widget列表操作限制:
# 将target_list替换为你实际使用的列表变量 target_list[:] = [target_list[-1]] + target_list[:-1]
效果验证
针对你给出的示例:
- 操作前列表:
[1,2,3,4,5,6,7,8,9,0] - 执行上述代码后输出:
[0,1,2,3,4,5,6,7,8,9]
完全符合将末尾元素移动到首位、其余元素顺次后移的要求。
适配说明
- 该操作是在原列表内存上原地修改内容,没有生成新的列表对象,所有元素都是原列表中存储的原有实例,元素本身不会有任何变更
- 区别于
pop()+insert()的分步单元素操作,切片赋值是一次性调整列表内的元素引用顺序,不会触发Kivy列表绑定的单元素移除、添加事件,避免了Widget被从控件树删除后重新挂载导致的异常。
内容的提问来源于stack exchange,提问作者xero
相关产品推荐
相关产品推荐

