Python列表推导式——List

news2025/9/22 19:25:41

目录

遍历列表

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次并运算
280s340s
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")

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用天翎知识文档+群晖NAS搭建企业知识库,享用智能检索

编者按:检索是知识文档管理中常见切十分重要的功能,搭建企业知识库必不可少。本文分析了智能检索的特点,并介绍了其在知识文档管理系统中的实现。 关键词:智能检索,移动端,群晖NAS 知识管理中的检索功能 …

基于Java+SpringBoot+Mybaties+Vue 在线问卷调查系统设计与实现

一.项目介绍 本项目 可支持注册、登录 创建问卷、设置问卷内容(支持单选、多选、问答题) 分享问卷链接、分析问卷 查看问卷库、以及填写问卷内容 等功能 该项目采用 Springboot Mybaties Vue element UI 框架实现 二.环境需要 1.运行环境&#xff1…

教育科技创新即将崛起

随着“双减”政策的不断落实,真正具有创新精神和懂得教育科技的人,他们所创造的新模式、新生态即将崛起,属于教育科技和创新的春天即将到来。 那么,教育科技化和创新在不同的教育场景有什么体现呢? 我们先来看看目前…

【雷达通信】雷达探测项目仿真(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

OCR-paddleocr

PaddleOCR 分为 Detection(文本检测)、Direction classifier(方向分类器)和 Recognition(文本识别)三部分,因此需要三个模型。一、介绍 PaddleOCR是一款超轻量、中英文识别模型目标是打造丰富、…

【软件测试】测试人填坑?测试工作中的坑成长经历,填着填着就成了神......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 小刘: 之…

深度强化学习DRL现存问题和训练指南(D3QN(Dueling Double DQN))

目录 强化学习 问题 好用的算法标准 表现好 减小学习曲线的波动 On-Policy和off-Policy区别 学习方式 采样数据利用 学习本质 优缺点 DQN 创新点 优点 缺点 MDP和POMDP 结果图 DQN DDQN Dueling DQN 参数 iteration episode epoch Batch_Size Experime…

全新电商版本答案——全民拼购,越拼越得,白嫖产品不是梦

根据国家市场监督管理总局自2020年12月1日起发布的《规范促销暂行规定》第十二条的规定,为了推广自己的平台商城或商品,获取流量,采用新购买模式运营的平台通过附带给未被选中的参与者一定的奖金或者其他利益,属于有奖销售。 在此…

RS编码译码误码率性能matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 纠错编码技术在卫星通信、移动通信及数字存储等领域已获得了广泛的应用。RS码作为其中最重要的码类之一,具有优良的纠随机错误和突发错误的能力,被空间数据系统咨询委员会(CCSDS)作为一种…

记录安装Cytoscape的过程

一、安装前的准备工作 1、先java 看了大佬们的安装教程: 看到说先要安装对应的Java才能下载相应的cytoscape,因cytoscape是基于java的软件。 cytoscape安装教程1 cytoscape安装教程2 然后,自查了自己电脑上的Java版本,应该为jdk 11&#x…

【js】【爬虫】fetch + json-server 快速搭建爬虫服务器环境及数据后续处理(突破session缓存大小限制)

文章目录导读需求开发环境json-server使用安装json-server创建数据文件db.json运行服务器修改默认端口json-server提供的线上服务(不推荐)fetch上传数据到json-server服务器通过fetch新增数据报错Error: Insert failed, duplicate id数据后续处理打开导入…

ShellBrowser Delphi,Delphi组件功能和工具

ShellBrowser Delphi,Delphi组件功能和工具 ShellBrowser基本上被描述为集合的一部分,它能够为用户和开发人员提供Delphi的程序员,以便轻松灵活地访问windows shell性能。ShellBrowserComponents Delphi的使用基本上是能够模拟windows资源管理器的变体。…

阅读源码时:idea中如何使用todo标记、活动模板 (史上最全)

接下来, 尼恩要带大家 完成一个 超级牛逼的 大厂offer 收割机项目—— 100Wqps 三级组件 实操, 实操中,用到 caffeine 并且,尼恩要带大家 穿透式 、起底式的 学习 caffeine 的源码和架构, caffeine 的源码 特别复杂…

Linux之service服务-实现程序脚本开机自启

一、什么是.service文件? Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。 .service 文件通常包含3个模块: [Unit] 控制单元,表示启动顺序和依赖关系。[Service] 服务,表示…

LeetCode HOT 100 —— 23.合并K个升序链表

题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路 在做本题之前,先考虑一下,如何合并两个有序链表,见 21.合并两个有序链表 最直接的思路就是&am…

聊跨境:一年增长60%!人人都说跨境电商难做,但红利仍在(Starday)

随着经济全球化的发展,互联网的普及和跨境运输网络的日益发达,世界各国之间的贸易往来越来越频繁,跨境电商已然成为时代的主题。 近年来国家出口跨境电商利好政策的连续出台,加上《电商法》的保驾护航以及跨境电商从业者的积极推…

逻辑回归(logistic regression)

逻辑回归 一、假设函数 hθ(x)g(θTX)11e−θTX(Sigmoid函数)h_\theta(x) g(\theta^TX)\frac{1}{1e^{-\theta^TX}} \qquad \qquad \qquad (Sigmoid函数) hθ​(x)g(θTX)1e−θTX1​(Sigmoid函数) X取值范围是(−∞,∞)(-\infty, \infty)(−∞,∞) Y的取值范围是(0, 1) {θT…

基于FPGA的高速数据采集系统实现

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 2.1锁存器模块 2.2双口地址计数器模块 2.3双口RAM模块 2.4时钟分频模块 三、测试结果 一、理论基础 高速数据采集在军用民用领域都有着广泛的应用。高速数据采集系统在…

了解计算机里非门组成的部分

计算机中有一块硬件不是完全由NAND门构成的。这并不是把电脑变成电脑的必要条件,但大多数电脑都有一些。它们被用来从模拟的东西变成数字的东西,或者从数字变成模拟的东西。 人类的眼睛和耳朵会对类似的事物做出反应。我们听到的东西可以是响亮的&#x…

LeetCode 513找树左下角的值 112路径总和113路径总和ii 106从中序与后序遍历序列构造二叉树

文章目录513找树左下角的值c 代码实现python 代码实现112路径总和c 代码实现python 代码实现113路径总和iic代码实现python 代码实现106从中序与后序遍历序列构造二叉树c代码实现python 代码实现513找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 …