• python3学习笔记(7)_listComprehensions-列表生成式


     1 #python3 学习笔记17/07/11
     2 # !/usr/bin/env python3
     3 # -*- conding:utf-8 -*-
     4 
     5 #通过列表生成式可以生成格式各样的list,这种list 一般是容量小的list
     6 #导入os模块,模块的概念后面讲到
     7 import os
     8 #生成[1,2,3,4,5,6,7,8,9,10] 
     9 l1 = list(range(1,11))
    10 print("1-10",l1)
    11 
    12 # 生成[1*1, 2*2,...10*10]
    13 l2 = []
    14 for x in range(1, 11):
    15     l2.append(x * x)
    16 print("平方",l2)
    17 
    18 #比用for循环更简洁的方法,用生成式
    19 print("平方",[x * x for x in range(1,11)])
    20 
    21 #for 循环后面可以加上if 判断,这样我们就可以筛选出 仅奇数 或 偶数的平方
    22 print("偶数平方",[x * x for x in range(1, 11) if x % 2 == 0])
    23 print("奇数平方",[x * x for x in range(1, 11) if x % 2 != 0])
    24 
    25 #使用 两层循环,生成全排列
    26 print([m+n for m in 'ABC' for n in 'XYZ'])
    27 
    28 #列出当前文件所在目录下的文件和目录
    29 print([d for d in os.listdir('.')])
    30 
    31 #列表生成式 可以使用两个变量来生成list
    32 d1 = {'x':'A', 'y':'B', 'z':'C'}
    33 print([k + '=' + v for k, v in d1.items()])
    34 
    35 #用列表生成式 把一个list中的所有字符串变成小写
    36 L = ["Hello", "World"]
    37 print("lower case ", [s.lower() for s in L])
    38 
    39 #列表生成器,列表生成式 用[],而列表生成器用(),列表生成器会在生成列表的时候自动计算后续的元素,而不会像生成式子一样一次生成所有元素,从而节省空间
    40 L1 = [x *x for x in range(10)]
    41 print(L1)
    42 
    43 #列表生成器
    44 g = (x * x for x in range(10))
    45 #用next() 函数获取下一个生成的元素
    46 for n in g:
    47     print(n)
    48 
    49 #用普通函数 打印斐波那契数列
    50 def fib(max):
    51     n, a, b = 0, 0, 1
    52     while n < max:
    53         print(n, b)
    54         a, b = b, a + b 
    55         n = n + 1
    56     return 'done'
    57 
    58 fib(6)
    59 
    60 #将 print(b) 换成 yield b 这个函数就变成了生成器
    61 def fibg(max):
    62     n, a, b = 0, 0, 1
    63     while n < max:
    64         yield b
    65         a, b = b , a + b 
    66         n = n + 1
    67     return 'done'
    68 
    69 #把函数改成 generator后,我们一般不用next()函数来取下一个返回值,而直接使用for循环来迭代
    70 for n in fibg(6):
    71     print(n)
    72 #generator 拿不到return语句的返回值,如果要拿到返回值,必须捕获stopIteration
    73 g = fibg(6)
    74 while True:
    75     try:
    76         x = next(g)
    77         print("g: ",x)
    78     except StopIteration as e:
    79         print('Generator return value:', e.value)
    80         break
    81     else:
    82         pass
    83     finally:
    84         pass
  • 相关阅读:
    docker
    算法学习 —— 动态规划练习(二)
    算法学习 —— 动态规划练习(一)
    算法学习——动态规划讲解
    Java核心复习——CompletableFuture
    Java源码阅读(八)—— ThreadPoolExecutor
    Java源码阅读(三)—— ThreadLocal
    TensorFlow实现XOR
    实现逻辑回归-神经网络
    深度学习之Numpy整理
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/7149615.html
Copyright © 2020-2023  润新知