sort函数 sorted函数 超详细用法

1.sort()函数

例1. 按照数值升序/降序排列(排序条件单一为数值大小,最简单情况)

list1=[3,-4,2,4]
list1.sort()     # 默认升序排列.    list1.sort(reverse=True)为降序排列
print(list1)     # 输出[-4, 2, 3, 4]

例2. 按照绝对值从大到小排序,如果绝对值相同,则正数在前面。

例如列表[3,-4,2,4],排序后的结果为[4,-4,3,2]。

(排序条件为先考虑绝对值,再考虑数值大小)

list1=[3,-4,2,4]
list1.sort(key=lambda x:(abs(x),x),reverse=True)
# x代指list1中的每一个元素 先按照abs(x)排序,再按照x排序
print(list1)    # 输出[4,-4,3,2]

注意:list.sort()函数在原先列表的基础上进行操作,此时已改变列表list的值

2.sorted()函数

例1. sort()函数中的两种情况:按照数值排序以及按照绝对值大小排序

list1=[3,-4,2,4]
print(sorted(list1))  # 输出[-4, 2, 3, 4]
print(sorted(list1,key=lambda x:(abs(x),x),reverse=True)) # 输出[4, -4, 3, 2]

print(list1)          # 输出[3, -4, 2, 4]

注意:sorted(list1)返回了一个新列表,不改变原先列表list1的值

如果需要直接在原先列表上改变,则需额外赋值: list1=sorted(list1)

例2.  二维列表按照第二个元素升序排序(按照动物重量排序,其中1t=1000kg)

原始列表:s=[['北极熊', '0.75t'] , ['企鹅', '35kg'] ,  ['海豹', '1.35t']]

需要返回的排序后的列表:[['企鹅', '35kg'], ['北极熊', '0.75t'], ['海豹', '1.35t']]

s=[['北极熊', '0.75t'] , ['企鹅', '35kg'] ,  ['海豹', '1.35t']]
# 法一:使用sorted(list,key=...)
s1=sorted(s,key=lambda x:float(x[1][:-1]) * 1000 if x[1][-1] == 't' else float(x[1][:-2]))
print(s1)

# 法二:使用list.sort(key=...)
s.sort(key=lambda x:float(x[1][:-1]) * 1000 if x[1][-1] == 't' else float(x[1][:-2]))
print(s)

解释:

x[1]指二维列表中每个一维列表中index=1的元素(第二个元素)
如果x[1][-1]=='t',则重量x[1][:-1]需要*1000,转化为kg;
否则直接取kg前面的数字x[1][:-2]

猜你喜欢

转载自blog.csdn.net/m0_63077499/article/details/127118287