Python列表推导式——List

举报
红目香薰 发表于 2022/12/06 14:58:45 2022/12/06
【摘要】 我们基础range函数是参数范围是range(start,stop),在下图中能看到stopline-1,例如(0,10)只会遍历0-9的值。到这里我们基本对列表推导式算是有了一定的了解了,以后在计算这类复杂计算的时候就能使用这种方法进行快速计算了。在这种计算的方式下,我们能看到列表推导式的计算优势,计算量越大效果越明显。基础遍历语法,这里对i这个遍历的内容进行了增加、次幂、除法运算。这是一个有规

目录

遍历列表

range函数

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

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

列表推导式逻辑判断




遍历列表

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

编辑

range函数

我们基础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)

结果输出: 

编辑

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

列表推导式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")

编辑

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。