Python: sorted和sort的区别
16lz
2021-01-22
首先sorted和sort 的区别主要在于sorted是将排序完的数据赋予给一个新变量,而sort则是在原变量的基础上直接进行排序,不产生新变量。
这样说可能有点不好懂,看例子;
<span style="font-family:Verdana;font-size:12px;">a, b = [('b',1), ('c',2), ('a',3)] # a, b 为同一个list
a.sort() # 这样可以直接对a进行排序,如果是d = a.sort(), 你会发现a 同样发生了改变,而d并没有被赋值。
c = sorted(b) # 使用sorted,这样b就不会进行排序,而c也被赋值,成为sorted b.</span>
<span style="font-family:Verdana;">a = [('b', 1), ('c', 2), ('a', 3)]可以发现b并没有被赋值。。。 这里的lambda x: x[1]是指定了排序方法,选择list中每个tuple的第二个元素来比较进行从小到大,从前到后的排序,当然如果我们想从大到小排序,加入另一个参数,reverse = True
b=a.sort(key = lambda x: x[1])
b
a
Out[35]: [('b', 1), ('c', 2), ('a', 3)]</span>
如果想用多个关键字来排序:
<span style="font-family:Microsoft YaHei;"> a.sort(key = lambda x: (x[1],x[0]))</span>sorted的用法也差不多,cmp参数根据我理解跟key的用处有点相似,可以不用管,而且貌似key的排序效率更高!
更多相关文章
- 环境变量的安装以及python cahrm的安装以及常用快捷键的使用
- tensorflow 变量定义路径//问题
- 变量和数据类型
- python的全局变量与局部变量实验
- 在混合的Bash-Python代码片段中,变量的双引号和单引号
- 在Python / IPython解释器中为单个下划线_赋值
- 即使我返回2个变量,对象也不可迭代?
- 如何正确地获取在pysnmp中被捕获的变量的表行索引和命名值?
- python中查看变量内存地址的方法