推导式、生成器表达式

列表推导式

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

  • 不能使用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)
posted @ 2021-06-03 12:51  刘家小仙女  阅读(61)  评论(0编辑  收藏  举报