Python学习记录 ZIP迭代 & 推导式创建序列

2022.07.17 DAY17

1. 使用zip()并行迭代

  • 通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列"用完"时就会停止。

  • 测试代码:

      # zip
      def test():
          names = ("First", "Second", "Third", "Fourth")
          ages = (28, 26, 20, 25)
          jobs = ("老师", "程序员", "学生", "公务员")
    
          for name, age, job in zip(names, ages, jobs):
              print("{0}--{1}--{2}".format(name, age, job))
    
    
      if __name__ == '__main__':
          test() 
    
  • 执行结果:

      First--28--老师
      Second--26--程序员
      Third--20--学生
      Fourth--25--公务员
    

2. 推导式创建序列

1. 列表推导式
  • 列表推导式生成列表对象,语法如下:

    1. [表达式 for item in 可迭代对象]
    2. [表达式 for item in 可迭代对象 if 条件判断]
  • 代码测试:

      # 列表推导式
      def test2():
          a = [x for x in range(1, 5)]
          b = [x * 2 for x in range(1, 5)]
          c = [x * 5 for x in range(1, 20) if x % 5 == 0]
    
          print(a)
          print(b)
          print(c)
    
    
      if __name__ == '__main__':
          test2()
    
  • 执行结果:

      [1, 2, 3, 4]
      [2, 4, 6, 8]
      [25, 50, 75]
    
2. 字典推导式
  • 字典推导式生成字典对象,格式如下:

    1. {key_expression : value_expression for 表达式 in 可迭代对象}
    2. 类似于列表推导式,字典推到也可以增加if条件判断、多个for循环。
  • 代码测试:

      # 字典推导式
      def test3():
          # 统计文本中字符出现的次数
          myWords = "I Love You, File, Edit, All Right."
          char_count = {c: myWords.count(c) for c in myWords}
          print(myWords)
          print(char_count)
    
    
      if __name__ == '__main__':
          test3()
    
  • 执行结果:

      I Love You, File, Edit, All Right.
      {'I': 1, ' ': 6, 'L': 1, 'o': 2, 'v': 1, 'e': 2, 'Y': 1, 'u': 1, ',': 3, 'F': 1, 'i': 3, 'l': 3, 'E': 1, 'd': 1, 't': 2, 'A': 1, 'R': 1, 'g': 1, 'h': 1, '.': 1}
    
3. 集合推导式
  • 集合推导式生成集合,和列表推导式的语法格式类似:

    1. [表达式 for item in 可迭代对象]
    2. [表达式 for item in 可迭代对象 if 条件判断]
  • 代码测试:

      # 集合推导式
      def test4():
          a = {x for x in range(1, 100) if x % 9 == 0}
          print(a)
    
    
      if __name__ == '__main__':
          test4()
    
  • 执行结果:

      {99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
    
4. 生成器推导式(生成元组)
  • 元组是没有推导式的。

  • 一个生成器只能运行一次。第一次迭代可以得到数据,第二次迭代发现数据已经没有了。

  • 代码测试:

      # 生成器推导式 生成元组
      def test5():
          gnt = (x for x in range(1, 100) if x % 9 == 0)
          for x in gnt:
              print(x, end=' ')
          for x in gnt:
              print(x, end=' ')
    
    
      if __name__ == '__main__':
          test5()
    
  • 执行结果:

      9 18 27 36 45 54 63 72 81 90 99 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值