python列表-快速创建&和高级排序&循环

列表


定义方法和常用函数

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

methodfunction
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

列表快速生成

list = [对象 for循环]

cubes = [x**3+10 for x in range(1,11)]
print(cubes)
[11, 18, 37, 74, 135, 226, 353, 522, 739, 1010]
variables = [x+y for x in 'abc' for y in '0123']
print(variables)
['a0', 'a1', 'a2', 'a3', 'b0', 'b1', 'b2', 'b3', 'c0', 'c1', 'c2', 'c3']

数值列表 range()但不是列表

range(a,b)是产生从a到b-1的整数,但不是列表.range(5)输出就是range(0, 5)

通过list(range(a,b))转化成列表

range(x,y,z)含义:从x开始,y-1为上界,步长为z

print('out of range(2,5):')
for x in range(5):
    print(x)
print(list(range(1,6)))
range(5)
out of range(2,5):
0
1
2
3
4
[1, 2, 3, 4, 5]





range(0, 5)

骚操作排序

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

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





[c, a, b]

列表循环

dummy = ['a',1,2,False,[3,4]]
for x in dummy:
    print(type(x))
<class 'str'>
<class 'int'>
<class 'int'>
<class 'bool'>
<class 'list'>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值