python - 将列表从一个索引排序到另一个索引
问题描述
假设我有一个列表[2, 4, 1, 3, 5]
。
我想从索引 1 到末尾对列表进行排序,这给了我[2, 1, 3, 4, 5]
我怎样才能在 Python 中做到这一点?
(没有额外的空间将不胜感激)
解决方案
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
.
推荐阅读
- ansible - ansible:如何更改 $HOME 目录
- vue.js - 如何导入打包成 JavaScript 库的 Vue 组件?
- java - Java,使用compareTo方法在ToString中按字母顺序打印arraylist
- elixir - 在 Elixir 中使用 System.cmd :into 选项写入文件
- javascript - 如何在 Javascript 中映射异步函数?
- java - Java HTTP/1.1 GET 请求 BufferedReader readLine 永不停止
- javascript - 用 Python flask_socketio 反应 socket.io-client 不处理事件
- laravel - Laravel 背包 4.0。保存一个模型,然后保存另一个(不同)
- eclipse - 了解 IDE Eclipse 在构建项目时做了什么(maven 命令?)
- c++ - 构建 SquareMatrix 模板类的问题