首页 > 解决方案 > 将列表从一个索引排序到另一个索引

问题描述

假设我有一个列表[2, 4, 1, 3, 5]

我想从索引 1 到末尾对列表进行排序,这给了我[2, 1, 3, 4, 5]

我怎样才能在 Python 中做到这一点?

(没有额外的空间将不胜感激)

标签: pythonlistsorting

解决方案


TL;博士:

与切片分配一起使用sorted以保留原始列表对象而不创建新对象:

l = [2, 4, 1, 3, 5]
l[1:] = sorted(l[1:])
print(l)

输出:

[2, 1, 3, 4, 5]

更长的答案:

创建列表后,我们将进行切片分配:

l[1:] = 

现在你可能想知道它是做什么的[1:],它对列表进行切片并从第二个索引开始,所以第一个索引将被删除。Python的索引从零开始,:意味着在索引之前获取所有内容,但如果是[1:3]它只会获取索引1和之间的值,3假设您的列表是:

l = [1, 2, 3, 4, 5]

如果您使用:

print(l[1:])

这将导致:

[2, 3, 4, 5]

如果你使用:

print(l[1:3])

这将导致:

[2, 3]

关于切片,如果您愿意,请在此处阅读更多内容。

切片后我们有一个等号=,它只是简单地将=符号之前的内容更改为符号之后的内容=,所以在这种情况下,我们使用l[1:], 并且给出[2, 3, 4, 5],它会将其更改为=符号之后的内容。

如果您使用:

l[1:] = [100, 200, 300, 400]
print(l)

这将导致:

[1, 100, 200, 300, 400]

要了解有关它的更多信息,请查看

之后,我们得到了sorted,这是默认的内置函数,它简单地将列表从小到大排序,假设我们有以下列表:

l = [3, 2, 1, 4]

如果您使用:

print(sorted(l))

这将导致:

[1, 2, 3, 4]

要了解有关它的更多信息,请查看

之后,我们回到关于切片的第一个主题, with l[1:],但从这里您知道它不仅用于分配,您可以对其应用函数并处理它,就像我们在这里使用sorted.


推荐阅读