推导式生成器表达式

Posted 小仙女~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推导式生成器表达式相关的知识,希望对你有一定的参考价值。

列表推导式

  • 只适合用于构建比较复杂且有规律的列表,超过三层循环才能构建成功的,就不建议用列表推导式了

  • 不能使用debug模式

  • 循环模式:[变量 for 变量 in 可迭代对象]

    # 1-100之间的偶数写入列表
    li=[i for i in range(2,101,2)]
    print(li)
    
    #打印出小仙女1-100号
    li1=[f\'小仙女{i}号\' for i in range(1,101)]
    print(li1)
    
    #将10以内的整数平方写入列表
    li2=[i**2 for i in range(1,11) ]
    print(li2)
    
  • 筛选模式:[变量 for 变量 in 可迭代对象 if 条件]

    #打印出30以内能被3整除的数
    li3=[i for i in range(1,31) if i%3==0]
    print(li3)
    
    #过滤长度小于3的字符串列表,并将剩下的转换成大写字母
    li=[\'baoli\',\'wang\',\'li\',\'yn\']
    li1=[i.upper() for i in li if len(i)>3 ]
    print(li1)
    
    #循环出列表中有两个e的元素
    name = [["Tom", "Billy", "Thomas"," Jefferson", "Andrew", "Wesley", "Stephen", "Joe"],
            [" Alice ", "Jill"," Anna ", "Wendy", "Jennifer", "sherry", "Eva"]]
    li2=[j for i in name for j in i if j.count(\'e\')==2]
    print(li2)
    

生成器表达式

  • 几乎于列表推导式一模一样,只不过把[]换成了()
obj=(i for i in range(1,11))
for j in obj:       #for 循环的时候就已经转换成迭代器
  print(j)

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

  • 写法上的区别([],())
  • iterable:可迭代对象 与Iterator:迭代器的区别

字典推导式

list1=[\'xiaoxiannv\',\'xiaoyun\',\'wangminmin\',\'xiaotong\']
list2=[\'小仙女\',\'小云\',\'王敏敏\',\'小彤\']

dic={list1[i]:list2[i] for i in range(len(list1))}
print(dic)

得:{\'xiaoxiannv\': \'小仙女\', \'xiaoyun\': \'小云\', \'wangminmin\': \'王敏敏\', \'xiaotong\': \'小彤\'}

集合推导式

tu={i for i in range(1,11)}
print(tu)

以上是关于推导式生成器表达式的主要内容,如果未能解决你的问题,请参考以下文章

Python入门-4控制语句:10推导式创建序列-列表推导式-字典推导式-集合推导式-生成器推导式

生成器表达式 和 列表推导式

推导式

列表推导式和生成器

python函数--生成器,生成器表达式,列表推导式

推导式