1-4-11 数据类型-推导式

4.推导式

推导式是Python中提供了一个非常方便的功能,可以让我们通过一行代码实现创建list、dict、tuple、set 的同时初始化一些值。

请创建一个列表,并在列表中初始化:0、1、2、3、4、5、6、7、8、9...299 整数元素。

data = []
for i in range(300):
    data.append(i)
  • 列表

    num_list = [ i for i in range(10)]
    
    num_list = [ [i,i] for i in range(10)]
    
    num_list = [ [i,i] for i in range(10) if i > 6 ]
    
  • 集合

    num_set = { i for i in range(10)}
    
    num_set = { (i,i,i) for i in range(10)}
    
    num_set = { (i,i,i) for i in range(10) if i>3}
    
  • 字典

    num_dict = { i:i for i in range(10)}
    
    num_dict = { i:(i,11) for i in range(10)}
    
    num_dict = { i:(i,11) for i in range(10) if i>7}
    
  • 元组,不同于其他类型。

    # 不会立即执行内部循环去生成数据,而是得到一个生成器。
    data = (i for i in range(10))
    print(data)
    for item in data:
        print(item)
    

小高级

  1. 推导式支持嵌套

    data = [ i for i in range(10)]
    
    data = []
    for i in range(10):
        data.append(i)
    
    data = [ [i,j] for j in range(5) for i in range(10) ]
    
    data = []
    for j in range(5):
        for i in range(10):
            data.append([i,j])
    
    # 一副扑克牌
    poker_list = [ [color, num] for num in range(1, 14) for color in ["红桃", "黑桃", "方片", "梅花"]]
    print(poker_list)	
    
    
    poker_list = [ (color,num) for num in range(1,14) for color in ["红桃", "黑桃", "方片", "梅花"] ]
    
  2. 烧脑面试题

    def num():
           return [lambda x: i * x for i in range(4)]
       
       
       # 1. num()并获取返回值  [函数,函数,函数,函数] i=3
       # 2. for循环返回值
       # 3. 返回值的每个元素(2)
       result = [m(2) for m in num()]  # [6,6,6,6]
       print(result)
    
    def num():
           return (lambda x: i * x for i in range(4))
       
       
       # 1. num()并获取返回值  生成器对象
       # 2. for循环返回值
       # 3. 返回值的每个元素(2)
       result = [m(2) for m in num()]  # [0,2,4,6 ]
       print(result)
    
posted @ 2022-10-20 22:44  布丁家的苏苏  Views(7)  Comments(0)    收藏  举报