zoukankan      html  css  js  c++  java
  • 4-4日 列表推导式,生成器推导式

    1,列表推导式就是在列表中进行for 循环if语句判断,最多两个for,一个if判断

    #求1到30 被3整除的数的平方
    li = [i*i for i in range(1,31)if i%3 == 0]
    print(li)
    li = [i for i in range(1,101)if i%2 == 0]
    l2 = [i for i in range(1,101)if i%2 == 1]
    print(li)
    print(l2)
    #求列表中带两个'e'名字
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    li = [name for i in names for name in i if name.count('e')==2]
    print(li)

    用列表推导式能够构建的任何列表,用别的都可以构建。一行,简单,感觉高端。但是不易排错。

    l2 = ['python%s期'%i for i in range(1,12)]
    print(l2)

    列表推导式有两种模式:

                        1,循环模式,[经过加工的   i    for  i  in  可迭代对象 ]

                        2,筛选模式,[经过加工的  i   for i  in 可迭代对象,if 条件语句筛选]

    2, 生成器推导式

    把列表解析的  [  ]  换成  (  )  得到的就是生成器表达式。

    l_obj = ('python%s期'%i for i in range(1,12))
    print(l_obj)
    print(l_obj.__next__())

    3,字典推导式,

              1,将dic的键和值对调。

    mcase = {'a':10,'b':33}
    mcase_frequency = {mcase[k]:k for k in mcase}
    print(mcase_frequency)

               2,合并大小写对应的value值,将k统一成小写

    mcase = {'a':10,'b':33,'A':8,'Z':9}
    mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0)for k in mcase.keys()}
    print(mcase_frequency)

    4,集合的推导式

    计算列表中每个值的平方,自带去重功能

    squared = {x**2for x in [1,-1,2]}
    print(squared)

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

    例2:  求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

    例3:  求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

  • 相关阅读:
    软件开发记录04
    《敏捷软件需求》阅读笔记02
    软件开发记录03
    《敏捷软件需求》阅读笔记01
    软件开发记录02
    Leetcode
    Leetcode
    Leetcode
    leetcode -625-Minimum Factorization
    51Nod
  • 原文地址:https://www.cnblogs.com/yzxing/p/8717140.html
Copyright © 2011-2022 走看看