python自主学习——Python语句语法(语法、句法、注释、迭代器、推导式、生成器)

第四章——Python代码结构

!!!个人主页:个人主页
!!!推荐一款模拟面试、刷题神器,从基础到大厂面试题:点击此处进入牛客网注册学习吧
!!!今日的努力,明日的未来

语法和句法

  1. 注释:#单行注释

  2. 语句分行:当一行代码够长时,可以用\来分开连接多行

  3. 使用:将代码的头和身体分开

  4. 同一行写多个语句,可以用;分开

  5. if-elif-else语句

  6. 条件表达式(三元操作符)

    语法:X if C else Y

  7. 多重比较:如果想同时进行多重比较判断,可使用布尔操作符and、or、not连接来决定最终表达式的布尔取值。布尔操作符的优先级没有比较表达式的代码较高,即,表达式要先计算后再比较

  8. 真值、假值
    假值:

    布尔False
    null类型None
    整型0
    浮点型0.0
    空字符串''
    空列表[]
    空元组()
    空字典{}
    空集合set()

    ​ 除此之外,都是True

  9. 迭代器和iter()函数

    • 迭代器:用来表示一连串数据流的对象。迭代器提供了一种遍历类序列对象的方法。对于一般序列类型,可以利用索引从0一直迭代到序列的最后一个元素;对于字典、文件、自定义对象类型等,可以自定义迭代放大,从而实现对这些对象类型的遍历

    • 如何迭代:
      迭代器有一个__next__()方法,重复调用这个方法将逐渐返回流中的项。在循环中,如果要获得下一个对象,迭代器子集调用__next__()方法或将其传给内置函数next()。当遍历结束后(集合中再无访问的项)会遇到异常,从而结束循环。迭代器必须有__iter__()方法用来返回该迭代器本身,因此迭代器必定也是可迭代对象,可被用于其他可迭代对象适用的大部分场景

      迭代器有一些限制,只能向前迭代,不能后退,即迭代是单向的,只能访问next(),当然,可以独立创建一个反向的迭代器。迭代器不能复制,一旦需要重新迭代某个对象,必须重新创建一个该对象的迭代器。(用reversed()返回一个序列对象的逆序迭代器,enumerate()也可以返回迭代器)

    • 在for循环中使用可迭代对象,是用iter将该对象变为可迭代对象

    • !!!!:在迭代一个对象的过程中最好不要去修改对象本身,否则会发生难以预料的迭代异常,使得代码具有潜在的缺陷

  10. iter()函数

    1. iter(obj) 如果obj是一个序列类型,那么可以根据其索引从0开始迭代
    2. iter(callable, sentinel)每次迭代调用callable,直至迭代的下一个值返回sentinel
    3. 并不是所有的可迭代的对象都是iterabal的子集,那么我们可以通过iter()来检查
  11. 判断一个对象是否是该类型:
    isinstence(it_s,lteration)
    issubcalss() 该方法用于判断参数class是否是类型参数classinfo的子集

  12. 推导式
    推导式是从一个或多个迭代器快速简洁地创建数据结构地一种方法

    1. 列表推导(解析)
      [expr for item_var in iterable]
      改语法地核心是for循环:

      print([x**2 for x in range(9)])
      print([ss[::-1] for ss in('green', 'red', 'blued')])
      
      #[0, 1, 4, 9, 16, 25, 36, 49, 64]
      #['neerg', 'der', 'eulb']
      
    2. 字典推导
      {key_expr:value_expr for expr in iterable}
      类似于列表推导,字典推导也有if条件判断以及多个for循环迭代语句

      word = 'letters'
      letter_counts = {letter: word.count(letter) for letter in set(word)}
      letter_counts
      #{'s': 1, 'r': 1, 'l': 1, 'e': 2, 't': 2}
      
    3. 集合推导
      与上面列表推导式:

    4. 生成器表达式:
      生成器表达式是对列表解析地拓展,列表解析有一个不足,它一次性生成所有数据,用于创建列表,这样在数据量很大,内存很有限地时候造成地问题。生成器表达式解决了这个问题,他一次生成一个数据,然后暂停,当下一次使用时,生产出下一个数据,工作地过程就像迭代器一样
      语法:(expr for item_var in iterable if cond_expr)
      生成器只能运行一次,其只在运行中产生值,不会被存下来,所以不能重新使用或备份一个生成器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值