一、列表生成式
1、列表生成式就是python内置的一种用来生成list的生成式。
比如下面这个例子:
l=[]
for i in range(10)
list.append(i)
生成一个列表要用循环语句此次添加元素。如果我们用列表生成式,一句话即可:
l=[i for i in range(10)] #这个生成式的操作是,for循环执行后得到的i,返回给前面的i。这样执行结束后,l=[0,1,2,3,4,5,6,7,8,9]
l1=[str(num).zfill(2) for n0um in l]# for循环遍历l,得到的值返回给前面的num,然后做操作str(num).zfill(2).用0补充到2位。最终结果l1=[00,01,02,03,04,05,06,07,08,09]
2、如果生成式用()括起来,最终结果就是不是一个list,而是一个生成器
l2 = ( i for i in range(1,101,2) ) #生成100以内的奇数 # 如果print(l2)结果会是 <generator object <genexpr> at 0x02C88E10> for j in l2: #l2是一个生成器,可以循环读出生成器的数据 print(j)
生成式和生成器的区别:
扫描二维码关注公众号,回复:
85326 查看本文章
生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面。每次只占用一个空间,用一个生成一个。但是效率低
list它是把所有的元素都放在内存里面的,占用空间多。但是效率高
3、三元表达式
三元表达式也是一行写出。用if--else。如果if条件成立,则执行if前的语句,否则执行else语句
举例:
a=1
b=2
c= a if a>b else b #如果a>b,则执行if前的a,也就是c=a.。否则执行else也就是c=b
4、匿名函数lambda
匿名函数
lambda x: x+1 #冒号后面的是函数体,也是函数的处理逻辑,冒号前面的返回值
举例:
d = {'a':8,'b':2,'c':3}#定义一个字典 res = sorted(d.items(),key=lambda x:x[1]) #对字典进行排序。先取出字典的所有元组d.items().然后根据关键字排序。lambda x:x[1]就表示先取x[1],在d.items()获取到的list中,x[1]也就是字典中的value.然后将x[1]传给x,最终d.items根据value排序 结果就是:[('b', 2), ('c', 3), ('a', 8)]