python中sort()和sorted()的区别及用法实例
作者:兴涛
我们通常会遇到对数据库中的数据进行排序的问题,下面这篇文章主要给大家介绍了关于python中sort()和sorted()的区别及用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
本文主要讲sort与sorted的主要区别,以便正确使用
一、
- sort()只能用于列表;sorted()可以用于所有可迭代对象;
比如:
str_a = "blue" print(sorted(str_a)) >>>['b', 'e', 'l', 'u']
二、
- sort()对列表排序是进行原处排序,并不会返回新的列表;
- sorted()排序后会返回一个新的列表;
比如:
对于sort()来说: lis_a = [5,4,3,2,1] lis_a.sort() print(lis_a) >>>[1, 2, 3, 4, 5] 对于sorted()来说: lis_a = [5,4,3,2,1] lis_b = sorted(lis_a) print(lis_a) print(lis_b) >>>[5, 4, 3, 2, 1] >>>[1, 2, 3, 4, 5]
- 为什么会有两种方法,而不简单的使用一种方法就行了呢?
下面是我的个人理解,可能并不全对,如有纰漏望指正。 我认为,因为列表是可变序列,所以可以原地修改,也即可以原地排序。但是对于字符串等可迭代对象来说,是属于不可变的,是不可以原处修改的。sort()方法属于原地修改,所以可能只能用于列表,对于其他不可变的可迭代对象就创造了另一种sorted()方法。
- 还有一点浅层的就是,sort()因为是原处排序,所以对原列表进行了修改。如果你不想改变原列表,那么python提供了sorted()方法。
- 可能有人不懂什么是原处修改?如果理解就不必往下看。
比如:
可变序列:lis_a = ['a','b','c','d','e','f'] 不可变序列:str_a = "abcdef" lis_a[0] = 1 str_a[0] = 1 #序列均可进行下标索引操作 print(lis_a) print(str_a)
那么就会报错
但是对于列表来说则是:
python中输入字符串转列表的注意问题
python中使用input()来从键盘输入字符串 而这个操作稍微不注意 ==会出现一些问题,== 比如说将输入的字符串转为列表:
a = input() lis = list(a) print(lis)
当你输入一行字符串以空格间隔时:
那么你可能会想我把a中空格去掉就ok了,你可能会想到使用replace方法。==但是如果你输入负数呢?==
所以面对这些问题,我们可以使用split()方法:
a = input().split() lis = list(a) print(lis)
当以空格间隔的时候split()括号内不需要放任何参数:
如果你用逗号间隔,那么需要改为:input().split(",")
其实,一般当使用空格间隔的时候,才容易出现上述问题。
总结
到此这篇关于python中sort()和sorted()区别及用法的文章就介绍到这了,更多相关python sort()和sorted()区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!