Python扩展知识


导语

产品是需要打磨出来的,重点在于打磨二字,没有什么产品可以一就而成

字典替代switch

  • Switch语句同样为条件分支语句

  • 其他语言中Switch语句的作用,C#

  • 字典映射替代switch语句

    • 示例:
      def get_Sunday():
      
        return 'Sunday'
      
      def get_Monday():
      
        return 'Mnoday'
      
      def get_Tuesday():
      
        return 'Tuesday'  # 返回字符串常量
      
      def get_default():
      
        return 'Unkown'
      
      # 使用字典代替switch语句
      
      day = 2
      
      switcher = {
      
        0 : get_Sunday,  # key对应的value,不仅仅是字符串,还可以是function类型
      
        1 : 'Monday',
      
        2 : 'Tuesday'
      
      }
      
      # 比switch语句,简洁,可读性强
      
      # 使用get函数,若dict中包含输入参数key,则返回对应的value,否则返回默认值
      
      day_name = switcher.get(day, get_default) # ()代表执行函数
      
      if hasattr(day_name, '__call__'):  # 判断对象是否为function, 建议默认值,也使用方法
      
        print(day_name())
      
      else:
      
        print(day_name)
      
      # print(day_name)
      
      # print(type(day_name))

列表推导式

  • 功能相同方法

    for in循环 map函数

  • 根据已有的列表,创建新的列表
  • 类似数学中的 《集合推导式》
  • 简洁代码
  • 不仅限于对list进行推导,也可以包含set tuple str dict数据结构
  • 语法示例
     a = [1, 2, 3, 4, 5, 6, 7, 8]
    
    # 根据变量a,创建一个新的变量b,在a列表中的每个元素,进行平方运算
    
    

具有Python风格特色的列表推导式

b = [i**2 for i in a]

print(b)


- ###### 场景示例,加入条件判断

  ```python
  a = [1, 2, 3, 4, 5, 6, 7, 8]

  # 根据变量a,创建一个新的变量b,在a列表中的每个元素,进行平方运算


  # 场景示例,选择性改变元素

  # 加入条件判断进入,列表推导式中

  b = [i**3 for i in a if i >= 5]

  print(b)
  • str推导式
    # str推导式
    
    x = '1, 2, 3, 4, 5, 6, 7, 8'
    
    # 使用字符串中的有序元素,赋予对应的value,组成dict
    
    xs = {y:1 for y in x}
    
    print(xs)
  • Tuple推导式
    # tuple推导式
    
    Apple = (1, 2, 3, 4, 5)
    
    Orange = (x for x in Apple if x == 3)
    
    print(Orange) # 打印出对象,因为tuple为不可变
    
    for orange in Orange:
    
      print(orange)
  • Dict推导式
    # dict推导式
    students = {
    
      '石小乐': 18,
    
      '王小明': 16,
    
      '李飞飞': 17
    
    }
    
    # 实际使用两个参数,去解包dict,可进行颠倒key,value,或取出其中某个值
    
    # 解包需要调用内置items函数,返回的值,在tuple中不能直接使用
    
    student = {value: key for key, value in students.items()}
    
    print(student)

Author: Ming Hui
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Ming Hui !
 Previous
JSON与XML区别 JSON与XML区别
JSON简述:JavaScript Object Notation 译为 JavaScript 对象标记 本质概述:是一种轻量级的数据交换格式 再次强调 JSON是 一种数据交换格式 字符串是JSON的表现形式/载体 JSON对象 与
2020-07-12
Next 
套接字 套接字
Socket简介不同电脑上的进程之间如何通信 首先解决的问题是如何唯一标识一个进程,否则通信无从谈起。 在一台电脑上可以通过进程号(PID) 来唯一标识一个进程,但是在网络上这是行不通的。 其实TCP/IP协议族已经帮我们解决了这个问题,网
2020-07-12