zoukankan      html  css  js  c++  java
  • (13)生成式

    生成式就是用一行代码完成多行代码的等式

    列表生成式
    res=[]
    for item in range(1,11):
      if item > 5:
      res.append(item)
      print(res)

    我们for循环几行代码实现了一个范围值放入另一个列表中

    如果用列表生成式,则只需要一行
    res=[item for item in range(1,11) if item > 5]  # 创建一个列表,放入for循环,因为for循环已经在列表中所以不需要再append方法,直接把值放for循环的左边,然后将返回值赋值给一个变量,打印这个返回值
    print(res)

    res=[2222 for item in range(1,11) if item > 5]  #rang()就是表示列表内有多少个元素,左边这个也可以自定义,如果是一个数字,那么列表中会产生10个2222
    print(res)

    res=[item**2 for item in range(1,11) if item > 5]  #rang()就是表示列表内有多少个元素,左边的值也可以是一个运算式,列表中产生的值就是每个数字的平方式  
    print(res)

    res=[item for item in range(1,11) if item > 5] #表达式的扩展方法,列表的右边也可以是一个判断式,但是只有if,没有else
    print(res)

    PS:运行逻辑就是先产生一个列表,列表的元素从for循环获取,然后将值放到循环体的左边

    PS:要获取返回值必须将返回值放入一个变量打印才能获取

    PS:表达式内只要是

    PS:for循环生成式最多用到for循环加一个if判断的层面,无法再扩展

    列表表达式实例

    names=['alex_sb','egon','kevin_sb','hxx_sb','wxx_sb']
    res=[name for name in names if name.endswith('sb')]
    print(res)

    字典生成式
    res={i:i**2 for i in range(10) if i > 5}
    print(res)

    用字典生成式的方式将一个列表转换成字典
    l=[('name','egon'),('age',18),('gender','male')]
    dic={k:v for k,v in l if k!='age'}
    print(dic)

    集合生成式
    res={i for i in range(10)}
    print(res,type(res))

    PS:注意集合和字典一样是{}表示,但是字典内是key和value形式表示,而集合这是字符串或者是数字表示

    生成器表达式
    res = (x for x in range(1, 5))
    print(res)
    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))
    print(next(res))

    PS:生成器表达式和元祖一样是用(),但是()生成的不是元祖,生成器中没有生成元祖生成式

    生成式实例

    获取文本文件内字符最长的一行的字符数

    with open('aaa.txt',encoding='utf-8') as f:
      g=(len(line) for line in f)
      print(max(g))  #用max方法获取最大值

    PS:max的底层会调用一个for循环,然后取出最大值

    用生成式表示
    res=max(len(line) for line in f) #这种语法可以省略生成器的(),max((len(line) for line in f)) = max(len(line) for line in f) 这样写即可 
    print(res)

  • 相关阅读:
    dataGridView 滚动条 同步
    TextBox 只读
    grid 数据绑定后
    iframe 跳转问题
    TextBox 不可编辑
    C# 添加Excel 批注、如何在Excel的单元格里面增加批注
    dataSet 比较
    sql 游标、sql server 游标使用、实例
    Tab键
    计算文本框的字算、计算TextBox的字数长度
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10015703.html
Copyright © 2011-2022 走看看