zoukankan      html  css  js  c++  java
  • python之道12

    1. 用列表推导式做下列小题

    2. 用列表推导式做下列小题

    3. 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

      l = ['wusir', 'laonanhai', 'aa', 'b', 'taibai']
      # print([i.upper() for i in l if len(i) > 3])
      
    4. 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

      # print([(i,j) for i in range(6) if i % 2 == 0 for j in range(6) if j % 2 == 1])
      
    5. 求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

      print([[i-2,i-1,i] for i in range(3, 10, 3)])
      
    6. 求出50以内能被3整除的数的平方,并放入到一个列表中。

      print([i**2 for i in range(50) if i % 3 == 0])
      
    7. 构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']

      print(['python%s期'% i for i  in range(1,11) if i != 5])
      
    8. 构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]

       print([(i,i+1) for i in range(6)])
      
    9. 构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

      print([i+i for i in range(10)])
      
    10. 有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']

      print([l1[i] + str(i) for i in range(len(l1))])
      
    11. 有以下数据类型:

    x = {'name':'alex',
         'Values':[{'timestamp':1517991992.94,'values':100,},
                   {'timestamp': 1517992000.94,'values': 200,},
                {'timestamp': 1517992014.94,'values': 300,},
                {'timestamp': 1517992744.94,'values': 350},
                {'timestamp': 1517992800.94,'values': 280}],}
    
    

    将上面的数据通过列表推导式转换成下面的类型:[[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]

    print([[i['timestamp'], i['values']] for i in x['Values']])
    
    1. 用列表完成笛卡尔积

      什么是笛卡尔积? 笛卡尔积就是一个列表,列表里面的元素是由输入的可迭代类型的元素对构成的元组,因此笛卡尔积列表的长度等于输入变量的长度的乘积。

    ​ a. 构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。

    colors = ['black', 'white']
    sizes = ['S', 'M', 'L']
    tshirts = [(color, size)for color in colors for size in sizes]
    print(tshirts)
    

    ​ b. 构建一个列表,列表里面的元素是扑克牌除去大小王以后,所有的牌类(列表里面的元素为元组类型)。

    l1 = [('A','spades'),('A','diamonds'), ('A','clubs'), ('A','hearts')......('K','spades'),('K','diamonds'), ('K','clubs'), ('K','hearts') ]
    
    ranks = [str(n) for n in range(2, 11)] + list('JQKA')
    suits = 'spades diamonds clubs hearts'.split()
    lis = [(rank, suit) for suit in suits for rank in ranks]
    
    
    1. 简述一下yield 与yield from的区别。
      yield 是生成器函数的标识,函数中只要有yield那么他就是生成器函数而不是函数。
      next会从生成器函数中的yield获取值。
      yield from 从便于理解的角度讲:它会将一个可迭代对象里面的每一个值作为生成器的生成的值:
      yield from ['卫龙','老冰棍','北冰洋','牛羊配']
      等同于:
      yield '卫龙'
      yield '老冰棍'
      yield '北冰洋'
      yield '牛羊配'
      从更深层的角度去讲yield from有两个作用(一定要背过,面试题):

      1. 他可以完全代替了内层循环,提高效率,让待吗读起来更顺畅(下一道题就可以验证)。

      2. 还可以创建通道,把内层生成器直接与外层生成器的客户端连接起来

    2. 看下面代码,能否对其简化?说说你简化后的优点?

    def chain(*iterables):
    
    	for it in iterables:
    
    		for i in it:
    
    			yield i
    
    g = chain('abc',(0,1,2))
    
    print(list(g))  # 将迭代器转化成列表
    
    def chain(*iterables):
      for it in iterables:
        yield from it
    g = chain('abc',(0,1,2))
    print(list(g))
    优点: 他可以完全代替了内层循环,提高效率,让待吗读起来更顺畅(下一道题就可以验证)。
    
    1. 看代码求结果(面试题):
    v = [i % 2 for i in range(10)]
    print(v)
    
    v = (i % 2 for i in range(10))
    print(v)
    
    for i in range(5):
    	print(i)
    print(i)
    
    1. 看代码求结果:(面试题
    def demo():
        for i in range(4):
            yield i
    
    g=demo()
    
    g1=(i for i in g)
    g2=(i for i in g1)
    
    print(list(g1))
    print(list(g2))
    
    1. 看代码求结果:(面试题
    def add(n,i):
        return n+i
    
    def test():
        for i in range(4):
            yield i
    
    g=test()
    for n in [1,10]:
        g=(add(n,i) for i in g)
    
    print(list(g))
    
    # 分步去分析循环。
    
    
  • 相关阅读:
    C/C++ 构造函数不能是虚函数
    C/C++ STL迭代器失效
    Linux fork函数
    算法和数据结构 限流算法
    数据库 redis底层实现
    C/C++ 虚析构函数
    万物皆可 Serverless 之使用云函数 SCF 快速部署验证码识别接口
    万物皆可 Serverless 之使用云函数 SCF+COS 免费运营微信公众号
    腾讯云云函数 SCF 日志检索最佳实践
    江娱互动「世界争霸」产品迁移至腾讯云云函数的实践
  • 原文地址:https://www.cnblogs.com/zanao/p/11079849.html
Copyright © 2011-2022 走看看