Python之推导式

推导式

  • Python语言有一种独特的语法,相当于语法糖的存在,可以帮你在某些场合写出比较精简酷炫的代码。但没有它,也不会有太多的影响。Python语言有几种不同类型的推导式
    • 列表推导式
    • 字典推导式
    • 集合推导式
    • 元组推导式
  • 列表推导式

    • 列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句,如下例子所示:
    • lis = [x*2  for x in range(1, 10)]
      print(lis)
      
    • 列表推导式要这么理解,首先执行for循环,对于遍历的每一个x,代入x*x表达式中进行运算,将运算结果逐一添加到一个新列表内,循环结束,得到最终列表。它相当于下面的代码:
    • lis = []
      for i in range(1, 10):
          lis.append(i*i)
      
      print(lis)
      
    • 作用:
      • 列表推导式为我们提供了一种在一行内实现较为复杂逻辑的生成列表的方法。其核心语法是用中括号[]将生成逻辑封装起来。当然列表推导式也有多样用法
    • 增加条件语句
    • alist = [x * x for x in range(1, 11) if x % 2 == 0]
      print(alist)
      
    • 多重循环
    • #同时循环a和b两个变量。
      re = [a + b for a in '123' for b in 'abc']
      print(re)
      
  • 字典推导式

    • 既然使用中括号[]可以编写列表推导式,那么使用大括号呢?你猜对了!使用大括号{}可以制造字典推导式!
    • dic = {x: x**2 for x in (2, 4, 6)}
      print(dic)
      
    • 注意x: x**2的写法,中间的冒号,表示左边的是key右边的是value。
  • 集合推导式

    • 大括号除了能用作字典推导式,还可以用作集合推导式,两者仅仅在细微处有差别。
    • a = {x for x in 'abracadabra'}
      print(a)
      
  • 元组推导式

    • 使用了中括号和大括号,那么使用圆括号,是不是元组推导式?想法不错,但事实却没有。圆括号在Python中被用作生成器的语法了,很快我们就会讲到,没有元组推导式。
    • tup = (x for x in range(9))
      print(tup)
      
    • 要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下所示:
    • tup = tuple(x for x in range(9))
      print(tup)
      

推导式

  • 列表推导式(生成式)
    l = [1, 2, 3, 4]
    返回一定是个列表
    print([i * i for i in l if i % 2 == 0])
    
  • 字典推导式(生成式)
    dic = {"id":1001,"name":"yuan","age":22,"weight":"70kg","scores":76}
    # new_dic = {}
    # new_dic["name"] = dic.get("name")
    # new_dic["scores"] = dic.get("scores")
    # print(new_dic)
    
  • 字典推导式
    {k:v for k,v in dic.items()}
    new_dic = {k:v for k, v in dic.items()}
    print(new_dic)
    
  • 将一个字典的键值倒换
    new_dic2 = {v:k for k, v in dic.items()}
    print(new_dic2)
    
  • 将一个字典的键转换成大写
    new_dic3 = {k.upper():v for k, v in dic.items()}
    print(new_dic3)
    
  • 保留name和score两个键值对
    new_dic4 = {k:v for k, v in dic.items() if k=="name" or k=="scores"}
    print(new_dic4)
    print(any([True,False,False]))
    print(all([False,True,True]))
    
    l = [1,3,4,2]
    l.sort(reverse=True)
    print(l)
    
    print(sorted(l,reverse=True))
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值