美文网首页
三元表达式、列表解析、生成器

三元表达式、列表解析、生成器

作者: single仔 | 来源:发表于2019-05-23 17:44 被阅读0次

    本人只是初学阶段,在学习过程中的一些笔记。想借此平台也分享给刚刚学习的朋友,如有错的地方欢迎各位大神与高手指点。

    三元表达式

    例一:比较大小

    x=3

    y=2

    res='aaaaa' if x > y else 'bbbbbbb' 

    print(res)


    例二:在函数中的应用

    def max2(x, y):

        return x if x > y else y

    print(max2(2, 3))


    列表解析器:(很占用资源)

    例一:把某个文件夹中log后缀结尾的文件放到l2列表中

    import os

    l1 = os.listdir('/var/log')

    l2 = [i for i in l1 if i.endswith('.log')]

    print(l2)


    例二:把l1列表中的每个元素都和l2中的元素配套一次

    l1 = ["x", "y", "z"]

    l2 = [1, 2, 3]

    l3 = [(i, j) for i in l1 for j in l2]

    print(l3)


    例三:把l1列表中的每个元素都和l2中的元素配套一次,但排除l2中的1

    l1 = ["x", "y", "z"]

    l2 = [1, 2, 3]

    l3 = [(i, j) for i in l1 for j in l2 if j != 1]

    print(l3)


    例子四:列表解析,将l1列表中的每个数值的平方值输入到l2中

    l1 = [1, 3, 5, 7, 9]

    l2 = [i ** 2 for i in l1]

    print(l2)


    例子五:生成一个新列表,里面的值是1到10的平方除以2的结果

    for j in [i ** 2 for i in range(1, 11)]:

        print(j/2)

    生成一个新列表,里面的值是1到10的偶数平方除以2的结果。如果是奇数的话即用!=0

    for j in [i ** 2 for i in range(1, 11) if i % 2 == 0]:

        print(j / 2)


    生成器:(每次只获取一个元素)

    例一:生成一个新的生成器,里面的值是1到10的平方除以2的结果

    g1 = (i ** 2 for i in range(1, 11))

    print(g1.__next__())  #每次只取一个元素,占用内存少

    或者

    g1 = (i ** 2 for i in range(1, 11))

    for i in g1:

     print(i)#每次只取一个元素,占用内存少

    或者

    g1 = (i ** 2 for i in range(1, 11))

    print(list(g1)) # 直接在一个列表中列出所有元素,缺点是占用内存多


    例二:生成一个新生成器,里面的值是1到10的平方除以2的结果

    for j in (i ** 2 for i in range(1, 11)):

        print(j / 2)


    例三:当y小于x时,循环输出y的值

    def f1(x): # 定义一个函数

     y = 0 # y由0开始

     while y <= x:# 循环,当y小于或等于x的值时就停止循环

     yield y # 当循环走到这里时会暂停,输出结果

     y += 1 # 在原来的值上+1再继续循环

    for i in f1(10):

     print(i)


    例四:输出1~20的平方值

    def mun(n): # 定义函数

     i = 1 # 给i赋值

     while i <= n: # 循环,当i小于或等于n的值时就停止循环

     yield i ** 2 # 当循环走到这里时会暂停,输出结果

     i += 1 # 在原来的值上+1再继续循环

    l2 = []

    for i in mun(20): # 定义函数的值为20

     print(i) # 可以直接输出结果

     l2.append(i) # 也可以将i的所有结果先插入l2列表中

    print(l2) # 然后输出l2列表,这样看起来比较好

    相关文章

      网友评论

          本文标题:三元表达式、列表解析、生成器

          本文链接:https://www.haomeiwen.com/subject/kxibzqtx.html