python:列表生成式和三元表达式、匿名函数

一、列表生成式

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)

生成式和生成器的区别:

生成器比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)]

猜你喜欢

转载自www.cnblogs.com/bendouyao/p/8967236.html