赞
踩
目录
通过for in循环来遍历集合列表
我们基础range函数是参数范围是range(start,stop),在下图中能看到stopline-1,例如(0,10)只会遍历0-9的值。
我们测试一下:
- for i in range(0, 10):
- print(i, end=",")
'运行
遍历结果:
我们使用一个列表的盒子来看看我们累计的过程。
- list_box = []
- for i in range(0, 10):
- list_box.append(i)
- print(list_box)
'运行
结果显示:
这是一个有规则的0-9的序列,每次遍历的时候递增一个值。
基础遍历语法,这里对i这个遍历的内容进行了增加、次幂、除法运算。
- list_box = []
- for i in range(1, 11):
- list_box.append(i)
-
- # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到10
- add = [i + i for i in list_box]
- mul = [i ** i for i in list_box]
- division = [round((i / (i + 1)), 10) for i in list_box]
- print(add)
- print(mul)
- print(division)
'运行
结果输出:
列表推导式5万长度list遍历4次并运算 | for循环5万长度list遍历4次并运算 |
280s | 340s |
- import time
-
- list_box = []
- for i in range(1, 50001):
- list_box.append(i)
-
- # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到50001
- startTime = time.time()
- add = [i + i for i in list_box]
- mul = [i ** i for i in list_box]
- division = [round((i / (i + 1)), 10) for i in list_box]
- endTime = time.time()
- print(len(add))
- print(len(mul))
- print(len(division))
- print("列表推导式消耗时间:", (endTime - startTime), "s")
循环计算时间:
- import time
-
- list_box = []
- for i in range(1, 50001):
- list_box.append(i)
-
- # 由于如果是乘法的话有0的结果就肯定是0,没法看了,所以我们从1遍历到50001
- startTime = time.time()
- add = []
- for i in list_box:
- add.append(i + i)
- mul = []
- for i in list_box:
- mul.append(i ** i)
- division = []
- for i in list_box:
- division.append(round((i / (i + 1)), 10))
- endTime = time.time()
- print(len(add))
- print(len(mul))
- print(len(division))
- print("for循环消耗时间:", (endTime - startTime), "s")
for循环整个遍历时间是341秒也就是差不多快6分钟了呢。
在这种计算的方式下,我们能看到列表推导式的计算优势,计算量越大效果越明显。
先使用列表推导式看看情况:
- import time
-
- list_box = []
- for i in range(1, 100001):
- list_box.append(i)
-
- # 计算偶数
- startTime = time.time()
- even = [i for i in list_box if i % 2 == 0]
- endTime = time.time()
- print(len(even))
- print("列表推导式计算偶数消耗时间:", (endTime - startTime), "s")
'运行
使用for i 循环再搞一遍。
- import time
-
- list_box = []
- for i in range(1, 100001):
- list_box.append(i)
-
- # 计算偶数
- startTime = time.time()
- even = []
- for i in list_box:
- if i % 2 == 0:
- even.append(i)
- endTime = time.time()
- print(len(even))
- print("for i 循环计算偶数消耗时间:", (endTime - startTime), "s")
'运行
到这里我们基本对列表推导式算是有了一定的了解了,以后在计算这类复杂计算的时候就能使用这种方法进行快速计算了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。