Python小细节之代码极致简化到一行(5)(列表推导式)(技法慎用)

news2024/9/22 13:39:01

列表、推导式

    • 引言
    • 简化前
    • 简化后
    • 讲解
      • 简化前
      • 简化后
    • 应用
    • 结尾

引言

简单快速
大行其道
现在我又带着简化代码来了
在这里插入图片描述
我思考了下
简化的代码是技巧的体现
但是简短的代码里面
蕴藏着的是Python的精华
在这里插入图片描述
所以
我会更加详细的解析代码的内容
致力于让每个零基础的人都看懂
在这里插入图片描述

简化前

mylist = [2, 3, 5, 8, 9, 12, 13, 15]

# 正常方式
result = []
for x in mylist:
    if x % 2 == 0:  # 判断x是否为偶数,如果x除以2的余数为0,则是偶数
        result.append(x)  # 把偶数添加到新的列表result中

print(result)  # 输出结果

简化后

# 单行方式
result = [x for x in mylist if x % 2 == 0]

print(result)  # 输出结果

讲解

简化前

mylist = [2, 3, 5, 8, 9, 12, 13, 15]

# 正常方式
result = []
for x in mylist:
    if x % 2 == 0:  # 判断x是否为偶数,如果x除以2的余数为0,则是偶数
        result.append(x)  # 把偶数添加到新的列表result中

print(result)  # 输出结果

知识点解释:

  • for x in mylist:这是一个遍历列表的循环语句,对于列表中的每个元素(这里是整数),将值赋给变量x
  • if x % 2 == 0:条件判断语句,使用取模运算符 % 检查当前元素x是否能被2整除(即是否为偶数)。
  • result.append(x):如果满足条件(x是偶数),则使用append()方法把x添加到名为result的新列表中。

简化后

# 单行方式
result = [x for x in mylist if x % 2 == 0]

print(result)  # 输出结果

知识点解释:

  • [x for x in mylist if x % 2 == 0]:这是一种简洁的列表推导式表达,它在一行内完成对原列表mylist中所有元素的遍历、筛选和新列表的生成。
    • x for x in mylist:这部分负责遍历原列表mylist中的每一个元素,并将其临时赋值给x
    • if x % 2 == 0:这部分是一个过滤条件,只有当x满足这个条件(即为偶数)时,才会保留这个元素。
  • 整个表达式的结果是一个新列表,其中包含了原列表中满足条件(为偶数)的所有元素。

应用

  • 在处理大量数据时,比如从一个大列表中筛选出符合条件的数据进行统计或进一步计算。
  • 对于Python初学者,先学习for循环配合if判断的方式有助于理解基础编程逻辑,然后再过渡到使用列表推导式优化代码。
    在这里插入图片描述

结尾

两种方式都可以用,
但是列表推导式会优雅且高效
在这里插入图片描述
记住使用条件

  1. 列表
  2. 需要筛选(if函数)
    可以简化代码,尤其适合于一些建立新列表的操作
    装13 很好
    是我
    有机会我就用
    在这里插入图片描述

那么
在这里插入图片描述

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

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

相关文章

DP活动:HMI-Board以太网数据监视器(一)以太网外设的使用

HMI-Board以太网数据监视器 开发工具  RT-Thread Studio/Keil MDK5(固件开发、编译)  SquareLine Studio(LVGL UI设计工具) 资料链接  RT-Thread Studio下载链接: https://download_redirect.rt-thread.org/…

C# 控制台进度条

最简单 namespace ProcessStu01 {internal class Program{static void Main(string[] args){for (int i 1; i < 100; i){Console.Write("\r{0,3}%",i);Thread.Sleep(50);}}} }第三方库 https://github.com/Mpdreamz/shellprogressbar using ShellProgressBar…

ubuntu source: not found

1、原因分析&#xff1a; shell 的解释器不是 bash&#xff0c;需把 shell 的解释器更改为 bash 2、ls -l /bin/sh 3、sudo dpkg-reconfigure dash 选择No 4、ls -l /bin/sh 5、reboot&#xff08;此步必须持续&#xff0c;否则无效&#xff09;

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

020-信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

020-信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间 #知识点&#xff1a; 1、工具项目-红蓝队&自动化部署 2、工具项目-自动化侦查收集提取 3、工具项目-综合&网络空间&信息 演示案例&#xff1a; ➢自动化-武器库部署-F8x ➢自…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

如何在科技创新中发挥国有企业的战略支撑作用?

要在科技创新中发挥国有企业的战略支撑作用&#xff0c;需要采取以下措施&#xff1a; 1. 强化国有企业创新主体地位&#xff1a;鼓励和支持国有企业加强技术创新、产品创新、组织创新和市场创新&#xff0c;提高自主创新能力。政府可以给予国有企业一定的政策和资金支持&…

MATLAB数据处理: 每种样本类型随机抽样

tn5;% 每种类型随机抽样数 indextrain[];% 训练样本序号集 for i1:typenumber index301 find(typemat i); n2length(index301); index302randperm(n2); index401index301(index302(1:tn)); indextrain[indextrain; index401]; end 该代码可以对大样…

【ZYNQ入门】第十篇、基于FPGA的图像白平衡算法实现

目录 第一部分、关于白平衡的知识 1、MATLAB 自动白平衡算法的实现 1.1、matlab代码 1.2、测试效果 1.3 测试源图 2、为什么摄像头采集的图像要做白平衡 3、自动白平衡算法总结 4、FPGA设计思路 4.1、实时白平衡的实现 4.2、计算流程优化思路 第二部分、硬件实…

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…

Docker Ipvlan l3s模式说明

看到Docker Ipvlan中有三种模式L2、L3、L3S模式&#xff0c;查阅了L3S&#xff0c;记录如下&#xff1a; 起因 Docker链接: IPvlan network driver 概念 注释说明&#xff08;摘选自: ipvlan-l3s模式&#xff09; L3S mode与L3 mode 的区别在于启用了iptables (conn-track…

[计算机提升] 切换(域)用户

4.14 切换(域)用户 4.14.1 为什么要切换用户 在Windows系统中&#xff0c;切换用户的主要目的是为了实现多用户共享同一台计算机的便利和安全。当多个人需要使用同一台计算机时&#xff0c;每个人可以登录自己的用户账户&#xff0c;这样可以避免互相干扰和混淆数据。 以下是…

数据可视化:普通人的信息解读法宝

在信息爆炸的时代&#xff0c;数据量庞大&#xff0c;如何高效处理和理解这些信息成为了每个人都面临的挑战。幸运的是&#xff0c;数据可视化作为一种直观的展示方式&#xff0c;已经成为提高普通人工作效率的得力工具。下面我就从可视化从业者的角度来简单聊聊这个话题。 首先…

JVM工作原理与实战(二十四):堆的垃圾回收-对象引用

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、软引用 1.软引用的执行过程 2.SoftReference队列机制 二、弱引用 三、虚引用与终结器引用 1.虚引用 2.终结器引用 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责…

【小白学机器学习3】关于最简单的线性回归,和用最小二次法评估线性回归效果, 最速下降法求函数的最小值

目录 1 什么是回归分析 1.1 什么是线性回归 1.2非线性回归 2 数据和判断方法 2.1 原始数据 2.2 判断方法&#xff1a;最小二乘法 3 关于线性回归的实测 3.1 用直线模拟 3.2 怎么判断哪个线性模拟拟合更好呢&#xff1f; 3.2.1 判断标准 3.2.2 最小二乘法 3.2.3 高维…

2024年数据中心交换机市场预测新鲜出炉,我们做了这些顺应趋势的事儿……

Dell’Oro Group发布的最新报告显示&#xff0c;2023年数据中心交换机市场与年初预测基本一致&#xff0c;200/400Gbps数据中心交换机的销售额几乎翻番。另外&#xff0c;AI&#xff08;人工智能&#xff09;与ML&#xff08;机器学习&#xff09;的发展势必推动服务器、存储、…

MATLAB字符串编辑常用代码

1.字符串赋值 % 字符串赋值 sabcdefg 2.字符串属性和操作 (1)获取字符串长度 sabcdefg;% 字符串赋值 length(a) % 获取字符串长度 (2)连接字符串 % 连接两个字符串,每个字符串最右边的空格被裁切 s1a s2b s3strcat(s1,s2) 3.字符串比较 % strcmp 比较两个字符串是…

STL---Priotity_queue+仿函数的介绍

一、优先级队列的介绍和使用 &#xff08;1&#xff09;介绍 翻译&#xff1a; &#xff08;1&#xff09; 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的。 &#xff08;2&#xff09; 此上下文类似于堆&a…

VMware workstation平台下配置Fedora-Server-39-1.5虚拟机网络

VMware workstation平台下配置Fedora-Server-39-1.5虚拟机网络 Fedora包含的软件以自由及开放源码许可来发布&#xff0c;并旨在成为该技术领域的领先者。Fedora在专注创新、抢先集成新技术、与上游Linux社区紧密工作方面拥有良好名声。该文档适用于在VMware workstation平台下…

还在为iOS和iPadOS存储不足闷闷不乐?这里有优化空间的详细步骤

储存空间似乎是iPhone和iPad用户最大的抱怨之一,这要归功于应用程序占用了越来越多的储存空间,媒体变得比以往任何时候都更渴望储存。以下是解决方法。 本指南中的屏幕截图来自iPhone,但提示也适用于iPad。必要时将提及设备之间的差异。 如何检查iPhone和iPad上的储存空间…