(进阶向)多类型列表创建和高级排序

列表创建和高级排序


列表定义方法和常用函数

a = [,,,]任意个对象构成列表

method function
a[n] 索引:返回第n+1个对象
a[i:j] 索引:返回i+1~j+1的对象
a[i:j]=[] 修改:修改i+1~j+1的对象
常用函数 功能
len(a) 返回a包含对象个数
list.sort(*, key=None, reverse=False) 从小到大排序,key是指定某个属性或者函数排序,reverse是倒序

定义

months = ['January','February', 'March','April', 'May','June', 'July','August', 'September','october' ,'November','December']

print(len(months))
print(months[0])
print(months[0:3])
months[0:2]=[1,2]
print(months[0:2])
print('-----------------------')
def A():
    print('i am A')
    return 'a'
def B():
    print('i am B')
    return 'b'
def C():
    print('i am C')
    return 'c'
D = [C(),B(),A()]
12
January
['January', 'February', 'March']
[1, 2]
-----------------------
i am C
i am B
i am A

骚操作排序

对象在排序时是有标准的,一定是选取共有的某个属性作为指标

key=xxx就是规定按照某个属性、指标

而对象的属性除了内置的len,size,之外,还可以自己构造,可以是任意函数


下面定义了moive电影类

在这里插入图片描述

以movie的类的对象的方法score“电影平均得分”作为排序依据


lambda介绍

lambda函数也叫匿名函数,及即没有具体名称的函数,它允许快速定义单行函数,类似于C语言的宏,可以用在任何需要函数的地方。这区别于def定义的函数。

lambda语法格式:

lambda 变量 : 要执行的语句

返回值

:后的函数对象


Moive.sort(key=lambda x: x.pscore())里,执行labda x:,x作为变量,将得到的函数x.pscore()返回给key

name = ['yang','wang','zhang']
name.sort(key = len, reverse=True)
#定义movie电影类
class movie ():
    def __init__(self,name='N/A',points=[]):
        self.sname = name
        self.spoints = points
    def pscore(self):
        score = self.spoints[0]+self.spoints[1]+self.spoints[2]
        print(score)
        return score
    def __repr__(self):
        return self.sname
#实例化movie
a1 = movie('a',[1,2,3])
a2 = movie('b',[2,3,4])
a3 = movie('c',[0,1,2])
#以movie类对象a1,a2,a3为元素组成数组
Movie=[a1,a2,a3]
Movie.sort(key=lambda x: x.pscore())#成员函数,改变Movie
#sorted(Moive,key=lambda x: x.pscore())全局函数,不改变Movie
Movie
6
9
3
>>[output] : [c, a, b]

thanks for your attention

发布了8 篇原创文章 · 获赞 0 · 访问量 21

猜你喜欢

转载自blog.csdn.net/weixin_44827144/article/details/105590948