【发布时间】:2018-06-25 01:36:12
【问题描述】:
我需要对 python 列表进行排序,但排序不应更改元素在排序之前的索引。在 php 中有一个名为 asort 的函数,但是如何在 python 中实现呢?有没有这样的方法?如果没有,如何在更少的行中做到这一点?
举个例子:
$a = [1, 5, 2, 4];
print_r($a);
asort($a);
print_r($a);
输出将是:
Array
(
[0] => 1
[1] => 5
[2] => 2
[3] => 4
)
Array
(
[0] => 1
[2] => 2
[3] => 4
[1] => 5
)
这里 5 在asort 之后仍然有索引 1,但它已经排到了末尾。
我确实有自己的解决方案,即:将索引创建为整数列表。然后使用 [List Length] 和 [Series] 创建此列表。然后,同步对数值和索引进行排序,即使用相同的排序组件。虽然,这并不是asort() 所做的,但非常接近。
有没有更好的方法呢?那也少了几行?也许是内置方法?一种有效的方法可能比更少的行更受欢迎。
谢谢
【问题讨论】:
-
我很困惑,
asort文档说这是用于关联数组(dicts),但您将其用于列表,那么连接是什么? -
请举例说明你已经尝试过什么。
-
如何在不改变元素索引的情况下对列表进行排序?除非列表已经排序
-
@cᴏʟᴅsᴘᴇᴇᴅ 在 PHP 中,数组既用作数字索引列表 也用作 关联字典。
-
@deceze 谢谢。这些是应该来自 OP 的重要细节。这个真的不清楚……