如何重新排序列表?

148 投票
12 回答
259151 浏览
提问于 2025-04-15 18:44

给定一个任意大小为 n 的数组,我想根据数组的离散索引来重新组织这个数组的元素。

Python 示例:

# Unique array of size n
[ "a", "b", "c", "d", "e", ... <n> ]

# Indices of array
[ 0, 1, 2, 3, 4, ... <index_of_n> ]

# Desired re-organization function 'indexMove'
indexMove(
    [ "a", "b", "c", "d", "e", ... <n> ],
    [ <index_of_n>, 4, 0, 2, 3, ... 1 ]
)

# Desired output from indexMove operation
[ <n>, "e", "a", "c", "d", ... "b" ]

有什么最快的方法来完成这个操作(也就是让这个操作的时间复杂度尽可能小)?

12 个回答

16

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、数据库或者外部文件。为了让程序能够理解这些数据,我们通常需要对它们进行一些处理和转换。

比如说,如果我们从用户那里获取了一个数字,但这个数字是以字符串的形式存在的(也就是用引号包起来的),我们就需要把它转换成真正的数字,这样程序才能进行计算。这个过程就叫做“类型转换”。

在不同的编程语言中,类型转换的方法可能会有所不同,但大体的思路是相似的。我们需要告诉程序:“嘿,这个东西其实是个数字,你可以把它当作数字来处理。”

此外,有时候我们还需要将数据从一种格式转换成另一种格式,比如把一个列表转换成一个字符串,或者把一个对象的属性提取出来。这些操作都是为了让数据更容易被使用和理解。

总之,数据处理和转换是编程中非常重要的一部分,掌握这些技能可以帮助我们更好地管理和利用数据。

>>> import random
>>> x = [1,2,3,4,5]
>>> random.shuffle(x)
>>> x
[5, 2, 4, 3, 1]
25

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。

在这些论坛上,很多人会分享他们的经验和解决问题的方法。你可以看到其他人提问,然后有人会给出详细的解答,甚至还会提供代码示例,帮助你更好地理解。

如果你在学习编程,遇到不懂的地方,不妨去这些地方看看,可能会找到你需要的答案,或者学到新的知识。

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
303

你可以这样做

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']

撰写回答