码迷,mamicode.com
首页 > 编程语言 > 详细

Python 列表\集合\ 字典推导式、生成器表达式

时间:2019-12-14 11:38:22      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:列表   推导式   使用   ict   eve   code   集合推导式   排错   bug   

Python 列表\集合?字典推导式、生成器表达式

列表推导式

  1. 循环模式
 l1 = [i for i in range(1,11)]
 l2 = [i ** 2 for i in range(100)]
 l3 = [f'python{i}' for i in range(50)]
  1. 筛选模式:

    l1 = [i for i in range(1,31) if i % 3 == 0]
  2. 嵌套循环:

    names = [['tom','billy','jefferson'],['wesley','steven','jennifer']]
    
    e = [ name for i in names for name in i if name.count('e') == 2]
    
    e = ['jefferson','wesley','steven','jennifer']

生成器表达式 # [] 变 ()

  1. 循环模式:

    g = (i for i in range(1,11))
    print(next(g))         #1 
    print(next(g))          #2
  2. 筛选模式

    g = (i for i in range(50) if ...)
    
    print(next(g))         #1 
    print(next(g))          #2

优缺点:

  1. 列表推导式-缺点:

    ? 有毒,不要太着迷

    ? 超过三层循环才能构建成功的,不建议使用

    ? 无法使用Debug 进行排错

  2. 列表推导式-优点:

    ? 一行结构,简单

    ? zb (23..)

    porker = [ i for i in range(2,11)] + list('JQKA')
    # [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']

列表推导式和生成器表达式的区别:

写法上 [] ()

iterable iterator

字典推导式:

list1 = ['jay','jj','meet']
list2 = ['周杰伦','林俊杰','panda']
mdict = {list2[i]: list[1] for i in range(len(list1))}
#{'周杰伦': 'jay', '林俊杰': 'jj', 'panda': 'meet'}

集合推导式:

{i for i in range(1,11)}

Python 列表\集合\ 字典推导式、生成器表达式

标签:列表   推导式   使用   ict   eve   code   集合推导式   排错   bug   

原文地址:https://www.cnblogs.com/pandaa/p/12038430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!