如何通过索引更新现有列表并保留指定索引元素?
Python 列表保留指定索引元素及索引更新操作
一、保留指定索引的元素
直接用列表推导式遍历你指定的索引元组,依次取出原列表对应位置的元素,就能保证顺序和你要求的一致:
original_list = ['Radar', 'completed 2022-10-23T08:18:26', 'PASS: 11FAIL: 0SKIP: 0', '0:14:55', 'completed', '2022-10-23T08:18:26'] indexes = (0, 1, -2, -1) filtered_list = [original_list[i] for i in indexes] print(filtered_list) # 输出:['Radar', 'completed 2022-10-23T08:18:26', 'completed', '2022-10-23T08:18:26']
如果想直接修改原列表而非生成新列表,直接赋值即可:
original_list[:] = [original_list[i] for i in indexes]
执行后原列表会直接变为你需要的结果。
二、通过索引更新/编辑列表
1. 单个索引位置更新
直接通过索引赋值,正索引、负索引都支持:
my_list = ['a', 'b', 'c'] my_list[1] = 'new_b' # 正索引更新第2个元素 print(my_list) # ['a', 'new_b', 'c'] my_list[-1] = 'new_c' # 负索引更新最后一个元素 print(my_list) # ['a', 'new_b', 'new_c']
2. 切片批量更新
通过切片可以一次性替换多个元素,替换的元素数量不需要和切片长度一致:
my_list = [1,2,3,4,5] my_list[1:3] = [6,7,8] # 替换索引1到2的元素(左闭右开) print(my_list) # [1,6,7,8,4,5] my_list[-3:-1] = [9] # 用单个元素替换两个位置的元素 print(my_list) # [1,6,7,9,5]
3. 注意事项
- 索引不能超出列表的有效范围,否则会抛出
IndexError; - 负索引从列表末尾计数,
-1代表最后一个元素,-2代表倒数第二个,以此类推。
内容的提问来源于stack exchange,提问作者iltech
相关产品推荐
相关产品推荐

