python对列表排序,并返回索引
时间: 2023-12-06 11:39:42 浏览: 72
可以使用 `sorted` 函数和列表的 `index` 方法来实现:
```python
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_idx = sorted(range(len(lst)), key=lambda i: lst[i])
```
其中,`sorted` 函数的 `key` 参数指定了排序规则,这里使用了一个 lambda 函数,将列表中各个元素的索引作为参数,返回对应元素的值作为排序依据。
`sorted_idx` 列表中的元素就是 `lst` 中元素按照升序排列后的索引。例如,`sorted_idx` 的第一个元素就是 `lst` 中最小值的索引。
如果需要按照降序排列,可以将 lambda 函数中的 `lst[i]` 改为 `-lst[i]`。
相关问题
将列表排序并按返回索引顺序python
您可以使用`sorted`函数来对列表进行排序,并使用`sorted`函数的`key`参数来返回每个元素的索引。具体来说,您可以使用`enumerate`函数来为每个元素分配一个索引,然后使用该索引作为排序键。以下是一个示例代码:
```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# 对列表进行排序,并返回索引列表
index_list = [i[0] for i in sorted(enumerate(my_list), key=lambda x:x[1])]
# 输出排序后的列表和索引列表
print('排序后的列表:', sorted(my_list))
print('按返回索引顺序的索引列表:', index_list)
```
在此示例中,`enumerate`函数为`my_list`中的每个元素分配一个索引,`sorted`函数使用该索引作为排序键,并返回排序后的元素及其索引。最后,我们使用列表推导式从排序结果中提取索引列表。
python中排序并返回原始索引
可以使用`enumerate`函数来获取原始索引,然后使用`sorted`函数对列表进行排序,最后使用`sorted`后的索引列表对原始列表进行重新排序即可。
示例代码如下:
```python
lst = [3, 1, 4, 2]
sorted_idx = sorted(range(len(lst)), key=lambda x: lst[x])
sorted_lst = [lst[i] for i in sorted_idx]
orig_idx = [i for i, _ in enumerate(lst)]
orig_lst = [orig_idx.index(i) for i in sorted_idx]
print(sorted_idx) # [1, 3, 0, 2]
print(sorted_lst) # [1, 2, 3, 4]
print(orig_lst) # [2, 0, 3, 1]
```
其中,`sorted_idx`是排序后的索引列表,`sorted_lst`是原始列表按照`sorted_idx`排序后的结果,`orig_lst`是按照`sorted_idx`排序后的索引,对原始索引列表进行重新排序得到的结果。