zoukankan      html  css  js  c++  java
  • python 列表构建器,动态列表构建器

    my_list = [x for x in range(1, 101)]

    #执行结果:my_list = [0, 1, 2, 3, 4 ……]

    添加条件处理

    my_list = [x * x for x in range(1, 101) if x % 2 == 0]
    #执行结果: my_list = [4, 16, 36 ……]

    多层循环嵌套

    my_list = [x + y for x in 'abc' for y in 'xyz']
    #执行结果:['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

    动态列表(节省内存)

    # 常规构建器的做法
    lix = [2*x + 1 for x in range(1, 101)]
    # 执行结果:[1,3,5,7,9,11,13,15,17.....]
    # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    # 常规构建器可以直接构建生成
    # 但是存在问题,如果一次构建的数据量太大,会严重占用内存
    # 我们在使用该列表的时候,有可能只是使用前10项
    # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    # 使用列表动态构建器
    lix = (2 * x - 1 for x in range(1, 101))
    # 执行结果:print (lix) --> <generator object <genexpr> at 0x7f232e462048>
    next(lix)
    # 执行结果:1
    next(lix)
    # 执行结果:3
    next(lix)
    # 执行结果:5
    next(lix)
    # 执行结果:7
    # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    # 列表动态构建器
    # 和构建器基本没有区别,创建的时候列表中是没有数据的
    # 必须通过next()函数来获取列表中的下一条数据
    # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    参考文章https://blog.csdn.net/xc_zhou/article/details/80589808

  • 相关阅读:
    LOJ164 高精度除法
    CQOI2013 新Nim游戏 和 BZOJ1299 巧克力棒
    UOJ514 通用测评号 和 CF891E Lust
    CF526F Pudding Monsters 和 CF997E Good Subsegments
    UOJ513 清扫银河
    SNOI2020 水池
    NOI2015 品酒大会 和 SNOI2020 字符串
    SNOI2020 生成树
    BJOI2020 封印
    UOJ523 半前缀计数
  • 原文地址:https://www.cnblogs.com/yummylucky/p/11232354.html
Copyright © 2011-2022 走看看