zoukankan      html  css  js  c++  java
  • Python推导式

    Python推导式

    推导式:是Python中提供的一个非常方便的功能,可以通过一行代码实现创建 list、dict、tuple、set的同时初始化一些值。

    1.列表推到式

    image-20220108101254043

    # -*- coding: utf-8 -*-
    '''
    @Time    : 2022/1/8 10:07
    @Author  : ziqingbaojian
    @File    : 01.学习使用.py
    '''
    # 1.列表推导式
    num_list=[i for i in range(0,10)]
    print(num_list)
    num_list=[[i,i] for i in range(0,10)]
    print(num_list)
    num_list=[i**2 for i in range(0,10) if i >6]
    print(num_list)
    num_list=[i+100 for i in range(0,10) if i >6]
    print(num_list)
    num_list=['啊哈{}'.format(i) for i in range(0,10) if i >6]
    print(num_list)
    
    # for前面的字是列表中的元素值,可以做操作,for循环后可以添加if条件
    

    image-20220108101825100

    2.集合推导式

    2.1 补充可哈希

    • 什么是可哈希(hashable)?

      • 简要的说可哈希的数据类型,即不可变的数据结构(字符串str、元组tuple、对象集objects)。
    • 哈希有啥作用?

      • 它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。
    • 什么是不可哈希(unhashable)?

      • 同理,不可哈希的数据类型,即可变的数据结构 (字典dict,列表list,集合set)

    2.2 字典推导式的使用

    # 2.集合推导式
    # 注:使用集合推导式的时候应该确保元素可哈希,即元素不可变
    num_set={i for i in range(10)}
    print(num_set)
    num_set={(i,i+1) for i in range(10)}
    print(num_set)
    num_set={i for i in range(10) if i>3}
    print(num_set)
    

    image-20220108104911324

    3.字典推导式

    • 注意:字典中的应该像集合中的元素一样,确保可哈希,即不可变。

    3.1 基本使用

    # 3.字典推导式
    num_dict={i:i for i in range(10)}
    print(num_dict)
    num_dict={i:i+1 for i in range(10)}
    print(num_dict)
    num_dict={i:"啊哈{}".format(i) for i in range(10)}
    print(num_dict)
    num_dict={i:"啊哈{}".format(i) for i in range(10) if i>3}
    print(num_dict)
    num_dict={i:(i,i+1) for i in range(10) if i>3}
    print(num_dict)
    

    image-20220108105412260

    3.2 完成字典的键值互换

    • 注意:如果值存在可变数据类型,则不可以,且值有相同的可能会丢失。
    • 使用场景:键的值都是可哈希的数据类型,且值不存在重复值的时候
    # 3.1 字典键值互换
    dic={1:"a",3:"b",2:"c"}
    dic2={v:k for k,v in dic.items()}
    print(dic2)
    # {'a': 1, 'b': 3, 'c': 2}
    

    4.元组推导式

    • 不同于其他的数据类型

      • 不会立即生成数据会得到一个生成器。
    • data=(i for i in range(10))
      print(data)# <generator object <genexpr> at 0x000000000213F190>
      print(type(data))
      for i in data:
          print(i)
      
    • image-20220108111105999

    5.练习题

    1.将字典按照排序,按照{}={} &格式拼接

    dic={
        "sign":"md5",
        "appid":"wwxxx",
        "mch_di":"153000",
        "total_free":"9901",
        "refund_fee":"10000"
    }
    
    # 1.按照键从大到小排序
    # dict.items()返回的是元组(KEY,VAULE)
    
    # 按照键排序
    # result=sorted(dic.items(),key=lambda x:x[0])
    # print(result)
    
    # 按照值排序
    # result=sorted(dic.items(),key=lambda x:x[1])
    # print(result)
    
    data="&".join(['{}={}'.format(k,v) for k,v in sorted(dic.items(),key=lambda x:x[0])])
    print(data)
    

    image-20220108113014042

    2.函数执行

    • image-20220108113150430
    def func():
        print(123)
    
    datalist=[func for i in range(10)]#执行完,此时i=9
    print(datalist)
    

    image-20220108113405317

    data_list=[lambda x:x+i for i in range(10)]# 此时不执行函数,执行完i=9
    
    val=data_list[0](100)#100+9
    print(val)
    

    image-20220108113657310

  • 相关阅读:
    微服务安全(二)OAuth 2.0
    微服务安全(一)
    Spring Security 学习+实践
    Dubbo 学习(二)服务注册与发现
    Dubbo 学习(一)
    Spring Cloud Hystrix 学习(三)请求合并
    Spring Cloud Hystrix 学习(二)熔断与降级
    Spring Cloud Hystrix 学习(一)
    Spring Cloud Gateway 学习+实践
    Spring Cloud Zuul 学习+实践
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/15777848.html
Copyright © 2011-2022 走看看