Sort 函数,python

1,sorted改变原序列,sort不改变原序列的排序
使用sort和sorted关键操作,前者改变原数组,后者不改变原数组
改变原数组操作,一种是直接赋值给一个新的变量,如下
方式1:

x =[4, 6, 2, 1, 7, 9]
y = x[ : ]
y.sort()
print(y)#[1, 2, 4, 6, 7, 9]
print(x) #[4, 6, 2, 1, 7, 9]

方式2


x =[4, 6, 2, 1, 7, 9]
y = sorted(x)
print(y) #[1, 2, 4, 6, 7, 9]
print(x)#[4, 6, 2, 1, 7, 9]
对比以上,我们发现前者并为改变原数组,而后者操作,改变了原数据

2,sort函数的两个可选参数
sort(key,reverse = True/False)
1、key ;
key在使用时必须提供一个排序过程总调用的函数

2、reverse实现降序排序,需要提供一个布尔值:True表示降序排序,
刚刚写了一个小代码,遇到参数的调用了,我们拿出来看一看,这两个的作用,代码如下:

score = [('A', 80), ('B', 86), ('C', 92), ('D', 87), ('E', 88), ('F', 85),
('G', 86), ('H', 89), ('I', 88), ('J', 94), ('K', 94), ('L', 80),
('M', 83), ('N', 80), ('O', 88), ('P', 94), ('Q', 82), ('R', 84),
('S', 96), ('T', 100), ('U', 82), ('V', 81), ('W', 94), ('X', 81),
('Y', 89), ('Z', 92)]
#对score中的分数,按照名次,人名,分数进行排序,
score.sort(key=lambda d:d[1],reverse=True)
print(score)

index0 = 1

print('1',score[0][0],score[0][1])
for i in range(1,len(score)):
    if(score[i][1]==score[i-1][1]):
        print(index0,score[i][0],score[i][1])
    else:
        index0 = i+1
        print(i+1,score[i][0],score[i][1])

输出结果

[('T', 100), ('S', 96), ('J', 94), ('K', 94), ('P', 94), ('W', 94), ('C', 92), ('Z', 92), ('H', 89), ('Y', 89), ('E', 88), ('I', 88), ('O', 88), ('D', 87), ('B', 86), ('G', 86), ('F', 85), ('R', 84), ('M', 83), ('Q', 82), ('U', 82), ('V', 81), ('X', 81), ('A', 80), ('L', 80), ('N', 80)]
1 T 100
2 S 96
3 J 94
3 K 94
3 P 94
3 W 94

我们把sort专门挑出来研究一下两个参数的作用


score.sort(key=lambda d:d[1],reverse=True)
我们可以看出来,key定义了一个lambda函数,提取出字典中的分数,对分数进行降序操作。返回的结果就是,按照分数从大到小排序。我们此刻也要清楚lambda函数的功能,这个比较简单,大家应该都可以明白其中的含义、

你可能感兴趣的:(python,数据分析,随笔)