python从小到大排列的函数_Python排列函数:sort、sorted

排序函数介绍:sort()和sorted()都属于Python list的排序方法

区别:sort()属于永久性排列,直接改变该list; sorted属于暂时性排列,会产生一个新的序列。

#sorted()

>>> sorted([5, 2, 3, 1, 4])

[1, 2, 3, 4, 5]#sort()

>>> L = [5, 2, 3, 1, 4]>>>L.sort()>>> printL

[1, 2, 3, 4, 5]

#sort后会返回None

defpaixu(list):returnlist.sort()

paixu(['a','f','g','b','a'])#并没输出结果,返回None

#sorted后会返回列表

defpaixu(list):returnsorted(list)

paixu(['a','f','g','b','a'])#输出结果

['a', 'a', 'b', 'f', 'g']

以下对常用的sorted进行介绍:

python 内置的sorted()函数可以对一个list进行排序:

>>> sorted([8,3,8,11,-2])

[-2, 3, 8, 8, 11]

既然说是高阶函数,那么它还可以接受一个key函数来实现自定义的排序,比如按照绝对值大小进行排序:

>>> sorted([8,3,8,11,-9],key=abs)

[3, 8, 8, -9, 11]

key指定的函数将作用于list中的每一个元素上,根据key函数返回的结果进行排序。

来看看字符串排序的问题:

>>> sorted(['abc','Abc','Cba','bAc'])

['Abc', 'Cba', 'abc', 'bAc']

默认的,对于字符串,sorted函数按照ASCII的大小进行排序,因为C

如果我们想要达到忽略大小写的排序,只需要更改一下key函数:

>>> sorted(['abc','Abc','Cba','bAc'],key=str.lower)

['abc', 'Abc', 'bAc', 'Cba']

结合lambda关键字按年龄排序:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

sorted(students, key=lambda s: s[2]) #按年龄排序

#输出结果

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

进一步,要进行反向排序,可以传入第三个参数reverse=True:

>>> sorted(['abc','Abc','Cba','bAc'],key=str.lower,reverse=True)

['Cba', 'bAc', 'abc', 'Abc']

sorted()排序的关键在于实现一个映射函数!

练习:

把一句话的每个单词按照开头的字母排序

思路:根据空格用split()把字符串变成list,然后用sort或者sorted排序

#change this value for a different result

my_str= "Hello this Is an Example With cased letters"

#第一种方法:这段长代码很难受

'''a = my_str.upper()

print(a)

b = a.split(' ')

print(b)

b.sort()

print(b)

#your solution here'''

#第二种方法:结合key关键字一条就出来了

sorted(my_str.split(),key=str.lower)#输出结果

['an', 'cased', 'Example', 'Hello', 'Is', 'letters', 'this', 'With']#第三种,无视大小写排序#breakdown the string into a list of words

words =my_str.split()#sort the list

words.sort()#display the sorted words

print("The sorted words are:")for word inwords:print(word, end=' ')#输出结果

The sorted words are:

Example Hello Is With an cased letters this

用一组tuple表示学生名字和成绩:L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)],然后分别按名字和成绩排序

思路:定义两个函数用用t[0]和t[1]分别表示名字和成绩,然后用sort或sorted排序

#按名字字母排序

>>> L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]>>> defby_name(t):returnt[0] #t[0]表示名字>>> L2 = sorted(L,key =by_name)>>> print(L2)

[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

#按成绩低到高排序>>> defby_score(t):return t[1] #t[1]表示成绩>>> L2 = sorted(L,key =by_score)>>> print(L2)

[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值