python的推导式及包与模块

推导式分类

推导式 comprehensions(又称解析式),是 python 的一种独有特性。推导式是 可以从一个数据序列构建另一个新的数据序列。

  • 列表推导式
    • 语法:
    • 变量名=[表达式 for 变量 in 列表]
    • 或者变量名= [表达式 for 变量 in 列表 if 条件]
    • 语义:遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
    • 练习1:快速创建一个包含元素1-10的列表
    • 练习2:快速创建一个包含1-10之间所有偶数的列表
    • 练习3:现在有一列表 lst = [[1,2,3],[4,5,6],[7,8,9]]要求出 1/4/7 和 1/5/9 元素, 思考如何取出
    使用 列表推导式:
    lst1 = [lst[i][0] for i in range(len(lst))]
    print(lst1)
    lst2 = [lst[i][i] for i in range(len(lst))]
    print(lst2)
    
    • 面试题分析:
    面试题:求 
    a = [lambda x: x * i for i in range(3)]
    print(a[0](2))
    
  • 字典推导式 字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
    • 字典推导式格式: 变量名={....}
    • 练习:将字典中的 key 和 value 进行对换。
    dict1 = {'a':1,'b':2}
    dict_new = {}
    #传统方式
    for key,value in dict1.items():
        dict_new[value] = key
    print(dict_new)
    #字典推导式
    dict_new = {v:k for k,v in dict1.items()}
    print(dict_new)
    
  • 集合推导式
    • 集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
    • 练习:创建一个存储10个偶数的集合
    set1 = {x for x in range(10) if x % 2 == 0}
    

print(set1) ```

模块

  • 模块的概念
  • 模块的定义
  • 模块中可以存在内容
  • 模块的使用
    • 导入模块
      • 1.import 模块名
      • 2.import 模块 as 别名
      • 3.一行导入多个模块(不推荐)
      • 4.from ... import...局部导入方式
      • 5.from ... import ... as 别名
      • 6.from 模块 import *
      • __all__的使用
      • 模块搜索的路径
        • import sys sys.path
      • pyc文件临时文件
      • 将模块当脚本文件允许(__name__的使用)

常用模块

  • random模块
    • random()
      • 产生大于 0 且小于 1 之间的小数
    • uniform(a,b)
      • 产生指定范围内的随机小数
    • randint(a,b)
      • 产生 a,b 范围内的整数,包含开头和结尾
    • random.choice(lst)
      • 随机返回序列中的一个数据
    • random.shuffle()
      • 随机打乱列表顺序
  • sys模块
    • sys.path
    • sys.version
    • sys.argv
  • 时间模块
    • time.sleep()

    • 表示时间的三种方式:

      • 1.时间戳(给计算机看的)
        • time.time()
      • 2.字符串时间(给人看的)
        • time.asctime()
        • ret = time.strftime('%Y-%m-%d %H:%M:%S')
      • 3.元组时间(用来操作时间的)
        • time.localtime()
    • 不同格式之间时间的相互转换

      • 1.时间戳转元组时间
      ts = time.time()
      ret = time.localtime(ts)
      print(ret)
      
      • 2.时间元组转时间戳
      ts = time.localtime()
      ret = time.mktime(ts)
      print(ret)
      
      • 3.时间元组转字符串时间
      ret = time.strftime("%Y-%m-%d",time.localtime())
      print(ret)
      

      • 什么是包
      • 包的导入
        • from 包名.模块名... import 变量名
        • from 包名.模块名... import 变量名 1,变量名 2...
        • from 包名 import 模块名
        • from 包名 import 模块名,模块名 1...
    • init.py的使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用PLY(Python Lex-Yacc)库来生成一个推导(Expression)的语法分析树。PLY提供了一个灵活的工具集,用于自动生成词法分析器和语法分析器。 首先,我们需要定义推导的语法规则。推导通常由表示数学运算的符号、变量、常数和操作符组成。我们可以使用BNF(巴科斯范)来描述推导的语法规则,例如: ``` expression : expression '+' term | expression '-' term | term term : term '*' factor | term '/' factor | factor factor : NUMBER | '(' expression ')' ``` 接下来,我们可以使用PLY中的工具函数和类来定义词法分析器和语法分析器。具体步骤如下: 1. 定义词法分析器:使用PLY提供的`lex`模块,定义词法规则和词法分析器函数。词法规则指定了如何将输入的字符串分割成词法单元(tokens),例如数字、运算符等。 2. 定义语法分析器:使用PLY提供的`yacc`模块,定义语法规则和语法分析器函数。语法规则根据BNF描述的语法规则来定义。语法分析器函数则完成对输入字符串的解析,并生成语法分析树。 3. 使用语法分析器:在主程序中,我们可以使用定义好的语法分析器函数,将输入的推导传递给语法分析器函数,并获得生成的语法分析树。 最后,我们可以通过遍历语法分析树的节点,将其以树状的形打印出来,从而生成一个推导的语法分析树。 以上就是使用Python生成一个推导的语法分析树的基本步骤。具体的实现细节和代码可以根据自身需要进行定制和拓展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值