Python3中list排序

Python3排序

list()方法:
描述: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

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
-------------------------------
#第二种输出是按字母多少排序(先输出多的字母,后输出少字母),并且输出了我在代码中写的3个a
d = 14
b = 4
c = 4
a = 3
f = 1
-------------------------------
#第三种输出是按字母多少排序(先输出多的字母,后输出少字母),但是不输出我在代码中写的3个a
d = 14
b = 4
c = 4
f = 1


一些比较重要的都在上面进行了解释,希望读者能够学懂Python3的排序吧!
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值