当前位置:   article > 正文

Python列表推导式——List

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")
'
运行

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/845241
推荐阅读
相关标签
  

闽ICP备14008679号