Python3排序
描述:list() 方法用于将元组转换为列表。
注意:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。
sort与sorted的区别:
sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作。
list的sort方法返回的是对已经存在的列表进行操作,而内置函数sorted方法返回的是一个新的list,而不是在原list
上进行操作。
语法:
sort:
num = [6,1,4,8,7]
num.sort()
print(num)
sorted:
num = sorted([6,1,4,8,7])
print(num)
key参数/函数:
描述:list.sort()和list.sorted()函数中用key参数来指定一个函数,此函数将在每个元素比较之前调用。例如通过
key指定
的函数来忽略字符串的大小写。key参数的值为一个函数,此函数只有一个参数且返回一个值来做比
较。此技术是快速的,因为key指定的函
数将准
确地对每个元素调用。
注意:key=lambda,lambda是一个隐函数,是固定的语法,最好不要写成别的单词。
语法:sorted(list,key=lambda m:(m.变量))
append()方法:
描述:append()方法用于在列表末尾添加新的对象
语法:list.append(obj)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
光说概念难以理解,我出一道题目,并给出示例代码帮助大家理解排序吧!
题目:统计控制台中输入的每个字符出现的次数,按三种不同的方式排序
class CharandCount:
def __init__(self,ch=None,count=None): #创建俩个变量,一个存放输出的字符(ch),另一个存放输出字符的个数(count)
self.ch = ch
self.count = count
s = input("请输入字符:")
l = [CharandCount(ch="a",count=3)] #给一个a,数量为3
for c in s:
#在l这个集合中查找有没有c的记录
cc = [a for a in l if a.ch==c]
if len(cc) == 0:
l.append(CharandCount(ch=c,count=1)) #上面有append解释
else:
cc.__getitem__(0).count += 1
def __init__(self,ch=None,count=None): #创建俩个变量,一个存放输出的字符(ch),另一个存放输出字符的个数(count)
self.ch = ch
self.count = count
s = input("请输入字符:")
l = [CharandCount(ch="a",count=3)] #给一个a,数量为3
for c in s:
#在l这个集合中查找有没有c的记录
cc = [a for a in l if a.ch==c]
if len(cc) == 0:
l.append(CharandCount(ch=c,count=1)) #上面有append解释
else:
cc.__getitem__(0).count += 1
for n in sorted(l,key=lambda m:m.ch): #第一种输出方式,上面有key的解释
print(n.ch,"=",n.count)
print("-------------------------------")
for n in sorted(l,key=lambda m:(-m.count,m.ch)): #第二种输出方式
print(n.ch,"=",n.count)
print("-------------------------------")
d = {}
for c in s:
count = d.get(c)
if count is None:
d.__setitem__(c,1)
else:
d.__setitem__(c,count+1)
for e in sorted(d,key=lambda a: -d.get(a)): #第三种输出方式
print(e,"=",d.get(e))
控制台:
请输入字符:bbbbccccddddddddddddddf
#每一种输出都查出来了每个字母的个数
#第一种输出是按字母先后顺序排序,并且输出了我在代码中写的3个a
a = 3
b = 4
c = 4
d = 14
f = 1
-------------------------------
a = 3
b = 4
c = 4
d = 14
f = 1
-------------------------------
#第二种输出是按字母多少排序(先输出多的字母,后输出少字母),并且输出了我在代码中写的3个a
d = 14
b = 4
c = 4
a = 3
f = 1
-------------------------------
d = 14
b = 4
c = 4
a = 3
f = 1
-------------------------------
#第三种输出是按字母多少排序(先输出多的字母,后输出少字母),但是不输出我在代码中写的3个a
d = 14
b = 4
c = 4
f = 1
d = 14
b = 4
c = 4
f = 1
一些比较重要的都在上面进行了解释,希望读者能够学懂Python3的排序吧!