• Python列表推导式——List


    目录

    遍历列表

    range函数

    列表推导式(★★★★★)五星技能点

    五万次【列表推导式】与【for】遍历计算消耗时间对照表:

    列表推导式逻辑判断


     

    遍历列表

    通过for in循环来遍历集合列表

    range函数

    我们基础range函数是参数范围是range(start,stop),在下图中能看到stopline-1,例如(0,10)只会遍历0-9的值。

    我们测试一下:

    1. for i in range(0, 10):
    2. print(i, end=",")

    遍历结果: 

    我们使用一个列表的盒子来看看我们累计的过程。

    1. list_box = []
    2. for i in range(0, 10):
    3. list_box.append(i)
    4. print(list_box)

    结果显示:

    这是一个有规则的0-9的序列,每次遍历的时候递增一个值。

    列表推导式(★★★★★)五星技能点

    基础遍历语法,这里对i这个遍历的内容进行了增加、次幂、除法运算。

    1. list_box = []
    2. for i in range(1, 11):
    3. list_box.append(i)
    4. # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到10
    5. add = [i + i for i in list_box]
    6. mul = [i ** i for i in list_box]
    7. division = [round((i / (i + 1)), 10) for i in list_box]
    8. print(add)
    9. print(mul)
    10. print(division)

    结果输出: 

    五万次【列表推导式】与【for】遍历计算消耗时间对照表:

    列表推导式5万长度list遍历4次并运算for循环5万长度list遍历4次并运算
    280s340s
    1. import time
    2. list_box = []
    3. for i in range(1, 50001):
    4. list_box.append(i)
    5. # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到50001
    6. startTime = time.time()
    7. add = [i + i for i in list_box]
    8. mul = [i ** i for i in list_box]
    9. division = [round((i / (i + 1)), 10) for i in list_box]
    10. endTime = time.time()
    11. print(len(add))
    12. print(len(mul))
    13. print(len(division))
    14. print("列表推导式消耗时间:", (endTime - startTime), "s")

    循环计算时间:

    1. import time
    2. list_box = []
    3. for i in range(1, 50001):
    4. list_box.append(i)
    5. # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到50001
    6. startTime = time.time()
    7. add = []
    8. for i in list_box:
    9. add.append(i + i)
    10. mul = []
    11. for i in list_box:
    12. mul.append(i ** i)
    13. division = []
    14. for i in list_box:
    15. division.append(round((i / (i + 1)), 10))
    16. endTime = time.time()
    17. print(len(add))
    18. print(len(mul))
    19. print(len(division))
    20. print("for循环消耗时间:", (endTime - startTime), "s")

    for循环整个遍历时间是341秒也就是差不多快6分钟了呢。 

    在这种计算的方式下,我们能看到列表推导式的计算优势,计算量越大效果越明显。

    列表推导式逻辑判断

    先使用列表推导式看看情况:

    1. import time
    2. list_box = []
    3. for i in range(1, 100001):
    4. list_box.append(i)
    5. # 计算偶数
    6. startTime = time.time()
    7. even = [i for i in list_box if i % 2 == 0]
    8. endTime = time.time()
    9. print(len(even))
    10. print("列表推导式计算偶数消耗时间:", (endTime - startTime), "s")

    使用for i 循环再搞一遍。

    1. import time
    2. list_box = []
    3. for i in range(1, 100001):
    4. list_box.append(i)
    5. # 计算偶数
    6. startTime = time.time()
    7. even = []
    8. for i in list_box:
    9. if i % 2 == 0:
    10. even.append(i)
    11. endTime = time.time()
    12. print(len(even))
    13. print("for i 循环计算偶数消耗时间:", (endTime - startTime), "s")

    到这里我们基本对列表推导式算是有了一定的了解了,以后在计算这类复杂计算的时候就能使用这种方法进行快速计算了。

  • 相关阅读:
    Spring Boot 介绍
    理解C语言指针
    6.eureka服务发现实例(springcloud)
    软件测试概念总结
    搞懂索引,真的很重要
    RHCSA-VM-Linux安装虚拟机后的基础命令
    什么是应变能力?如何提高应变能力?
    LVS面试题
    【web前端期末大作业】html网上在线书城大学生静态网页 大学生html当当书城仿站 网上书城购物网页作业HTML
    春秋云镜 CVE-2015-9331
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/128044635