如何按照指定索引顺序对列表进行重排序
列表按指定索引重排序实现方法
思路验证
你打算用for循环新建列表、通过append填充的思路完全正确,是最直观且容易理解的实现方式。你原本写的for i in range(Len(list))的写法也可以落地,只需要把len(list)换成len(顺序索引列表),通过原列表[顺序索引列表[i]]的方式取元素即可,不过直接遍历顺序索引列表的写法会更简洁。
代码实现
1. 基础for循环写法(和你的思路完全匹配)
original_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] order_index = [3, 5, 6, 1, 2, 4, 0] sorted_list = [] for idx in order_index: sorted_list.append(original_list[idx]) print(sorted_list) # 输出结果:['d', 'f', 'g', 'b', 'c', 'e', 'a']
2. 简化列表推导式写法
如果追求代码简洁,可以直接用列表推导式一行完成逻辑,底层逻辑和for循环完全一致:
original_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] order_index = [3, 5, 6, 1, 2, 4, 0] sorted_list = [original_list[idx] for idx in order_index]
注意事项
- 需要保证
order_index中的所有索引值都在原列表的合法索引范围内(即不大于原列表长度-1,且不为负数),否则会触发IndexError报错 - 若需求是完整重排整个列表,需要保证
order_index的长度和原列表长度一致,且没有重复索引值
内容的提问来源于stack exchange,提问作者user14004788
相关产品推荐
相关产品推荐

