Python高级编程之推导式合集,学会了后别人一看就是大神

python 高级编程 python高级教程 立即下载

一个简单的列子

现在有个需求,已知列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?

二逼青年版

生成一个新列表b,遍历列表a,把每个值加1后存在b里,最后再把a=b

"""
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 
学习Python中有不明白推荐加入交流Q群号:928946953 
群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
还有大牛解答!
"""
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = []
for i in a:
    b.append(i+1)
b = a
print(a)
print(b)
#Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python

这样二B的原因不言而喻,生成了新列表,浪费了内存空间

普通青年版

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for index,i in enumerate(a):
    a[index] +=1
print(a)
#Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python

毫无新意

略屌青年版

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a = map(lambda x:x+1, a)
print(a)
#Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python

运用了lambda匿名函数,稍微有那么一点点味了~~~

装逼青年版

a = [i+1 for i in range(10)]
print(a)
#Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Python

这样的写法就叫做列表生成式,有什么用呢?难道只是为了装B吗?

列表推导式

我想你应该知道,编写这样的代码很痛苦

Python高级编程之推导式合集,学会了后别人一看就是大神

ls = []
for i in ls:
    if i % 2 ==0:
        ls.append(i)
print(i)
#Output: [0, 2, 4, 6, 8]

Python

复制

这种写法或许用于C语言不错,但在Python中,运行速度很慢,因为解释器在每次循环的时候都要判断序列中的哪一部分需要修改,需要用计数器来跟踪需要处理的元素,而且每次遍历因为append()方法还要额外执行查询函数

而列表推导式就能解决这些问题,它可以使用编排好的功能对上述语法的一部分进行自动化处理

ls = [i for i in range(9) if i % 2 ==0]
print(i)
#Output: [0, 2, 4, 6, 8]

Python

很明显,列表推导式不仅更加高效,也更加简短,涉及的语法元素也更少,在大型程序中,也能出现更少的错误

基本语法

我们来具体分析上面给出的例子

ls = [i for i in range(9) if i % 2 ==0]

我们将列表推导式写在一个方括号内,因为它最终构建的是一个列表
列表推导式主要由三部分构成:

  1. for循环头部 for i in range(9)
  2. 判断条件 if i % 2 ==0
  3. 循环变量 i
    是不是非常Ease 非常Amazing!

工作原理

Python在执行列表推导式时,会对可迭代对象 ls 进行迭代,将每一次迭代的值赋给循环变量 i ,然后经过if判断,最终

由这些结果构成了新的列表,也就是列表推导式所返回的值

只要支持 for 循环进行迭代的对象,都可以对它使用列表推导式

字典推导式

字典推导式和列表推导式使用方法类似,只是用的是大括号。
字典推导式更多的是用于key和value的对调,合并大小写对应的value值

合并大小写对应的value值

dt = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
dt_sum = { k.lower(): dt.get(k.lower(), 0) + dt.get(k.upper(), 0) 
           for k in dt.keys() if k.lower() in ['a','b'] }
           #lower()大写字母变小写  upper()小写字母变大写
           #dict.get() 函数返回指定键的值,如果值不在字典中返回默认值
           #dict.keys() 返回字典所有的key,是一个可迭代对象
    
print (dt_sum)
#Output: {'a': 17, 'b': 34}

Python

快速更换key和value

dt = {'a': 10, 'b': 34}
dt_change = {v: k for k, v in dt.items()}
#items() 函数以列表返回可遍历的(键, 值) 元组数组
print(dt_change)
#Output: {10: 'a', 34: 'b'}

Python

集合推导式

如果你想去除重复数据,那么就可以使用集合推导式

sl = {i**2 for i in range(-2, 3)}
print(sl)
#Output: {0, 1, 4}

Python

总结

推导式看起来不符合常规,是因为它在方括号内部使用for循环,但是它却起到了让代码更加简洁的作用,尤其是它可以通过“判断条件”来决定什么情况下插入新的值

推导式可以帮助我们把一个序列或者其他可迭代类型中的元素过滤或是加工,然后形成列表、字典、元组。Python内置的filter和map函数组合起来也能达到这一效果,但是可读性上打了不小折扣

如果你想使用更短的代码,实现相同的功能,上面所述的三种推导式你必须得掌握

Python 高级编程 高清版 Python 高级编程 高清版! 立即下载

相关推荐

说说通用报表控件

我们已经开发有2款WINCC报表控件,一种是固定模板,一种是自定义模板。但是它们有个共同特点,就是数据都是来自WINCC的归档数据库。使用WINCC归档数据库的好处是不需要自己写脚本保存数据。但是有些情况下,我们需要自己保存数据,或者第三方系统通过数据表的方式给我们提供数据。那这样的话,我们之前的两款控件就不支持了。正好有个客户有类似需要,于是加了一天班写了个通用报表控件。之所以说是通用,是因为它可以插入任何支持.NET控件的组态软件中,比如WINCC、IFIX等。并且它不依赖于组态软件自己...

HwLib_的博客 3551

python程序编程代码大全,python编程代码详解

大家好,本文将围绕python程序编程代码大全展开说明,python编程游戏代码是一个很多人都想弄明白的事情,想搞清楚python代码大全简单需要先了解以下几个事情。

chatgpt001的博客 5万+

【白话系列】倍增算法

【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从

JarjingX 3万+

python安装方法_Python入门基础教程(非常详细)

Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任。这套 Python 基础教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。如果有小朋...

weixin_39813200的博客 2611

【模拟IC】从VCD到VEC:Cadence数模混合仿真中高效激励转换与HSIM工具链实战

本文详细解析了在Cadence数模混合仿真中,如何利用HSIM工具链的vcd2vec命令,将数字仿真生成的VCD文件高效转换为模拟仿真器所需的VEC格式激励文件。文章提供了从VCD文件预处理、io_top.sig文件编写、核心命令参数详解到Cadence ADE环境集成验证的全链路实战指南,并分享了自动化脚本方案,旨在解决数模混合验证中的“语言不通”难题,提升仿真效率。

k9l0m1的博客 121

避开命令行!在VMware vCenter 8.0图形化界面里搞定SSL证书续期全流程

本文详细介绍了在VMware vCenter 8.0图形化界面中完成SSL证书续期的全流程,包括计算机SSL证书、VMCA根证书和STS证书的管理。通过可视化操作,管理员无需使用命令行即可高效处理证书问题,确保vSphere环境的稳定运行。文章还提供了证书监控与预警配置的实用技巧,帮助用户提前规避证书过期风险。

weixin_27051161的博客 282

【2024】Python入门,详细基础教程,零基础入门,详细图文

Python入门基础介绍

weixin_42399800的博客 17万+

第四章 汇川技术InoProShop入门之串口自由协议解读

摘要: 串口自由协议是工业自动化中针对特定需求设计的自定义通信协议,具有高度灵活性和针对性,适用于小型设备、实时控制等场景。其核心包括自定义帧结构(起始符、地址码、数据区、校验位等)和通信规则(波特率、交互机制)。相比标准协议,自由协议效率更高但兼容性弱,设计时需注重可靠性、效率和可扩展性,适用于定制化或高实时性需求,如传感器数据采集或老旧设备改造。典型应用需平衡精简帧结构与抗干扰能力,同时预留扩展空间。

zyfucking2010的博客 2216

python入门基础(完整)

python入门基础(完整) 安装及配置 使用的编程地址:编程地址 python基础相关文件安装: 链接:https://pan.baidu.com/s/1ZAhPIJ4_KAgWRHzX1lD3dQ 提取码:nxis pycharm配置环境 将原本pycharm中不可见的显示出,需要勾选以下三个:...

weixin_55154866的博客 2万+

02-基于ART-PI开发板创建USB CDC 虚拟串口设备

本例在ART-PI开发板上,基于RT-Thread 5.0,5虚拟了一个USB32 CDC串口设备。

arm_fan的专栏 1886

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

本示例演示如何在 Gazebo 物理模拟器中设置 Universal Robotics UR10 机械臂和仿真环境。您需要配置一个机器人从树上摘苹果的仿真环境。本示例演示如何利用这些工具箱,使用 Universal Robotics UR10 机械手模拟机器人检测并从树上摘取苹果。Robotics System Toolbox™ - 在 Simulink® 和 Gazebo 中对机械手进行建模、规划和模拟。Navigation Toolbox™ - 生成三维环境的占用图。

机器人控制与仿真应用 4182

Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。

2301_76161259的博客 3万+

2023年下半年网络工程师案例分析真题答案解析

R1] ip route-static 0.0.0.0 0.0.0.0 GigabitEthemet2/0/1 (3) track (4) R1 to R2 //配置R1的缺省路由,联动BFD使得R1到2的流量优先走R1->S1->R2链路,当此链路发生故障时,流量切换到R1->R3->R2链路上。当同一VLAN内也需要网络隔离时,我们可采用交换机的(2)功能,若在配置了二层隔离后,部分主机有互通的需求,则可在需求主机的网关上配置(3)功能。不需要,MAC地址是数据链路层封装以太帧的地址标识。

鹿鸣天涯 751

python高级编程之列表推导式_python列表推导 大括号

Python在执行列表推导式时,会对可迭代对象L进行迭代,将每一次迭代的值赋给循环变量x,然后收集变量表达式x ** 2的计算结果,最终由这些结果构成了新的列表,也就是列表推导式所返回的值。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

m0_61041374的博客 451

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2024年Python最新python高级编程之列表推导式_python列表推导 大括号(1)

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。当然,在实际的应用中不能单纯追求代码的简洁,还要考虑到代码的可读性和维护成本。

2301_82242082的博客 312

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python技巧:字典推导式使用全攻略

​。

Trb201012的博客 1840

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

条件筛选与转换:列表推导式的高级用法

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。最后祝大家天天进步!

Trb701012的博客 481

三天背完Python语法合集,令小白大彻大悟!

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最后祝大家天天进步!

Python栈_基的博客 958

Python基础,7个小把戏

Python是一种非常灵活和功能强大的编程语言,它的设计哲学强调代码的可读性和简洁性,使得它在世界范围内广受欢迎。Python有许多有趣且实用的特性,下面列出了一些好玩且可能不太为人所知的用法

Trb601012的博客 1120

Python中的所有循环知识点

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。通过上述内容,我们了解了Python中循环的基本知识点.掌握这些知识可以帮助你编写更加高效和清晰的代码.在循环中,你可以使用。

GLB_0627的博客 852

python怎么写构造字典的代码?

Python是一种高级编程语言,也是当前最流行的编程语言之一。在Python中,字典是一种非常常见的数据类型,它可以用来存储键值对。在本文中,我们将从多个角度来分析Python如何构造字典的代码。一、用大括号和冒号构造字典Python中最基本的构造字典的方法是用大括号和冒号来表示键值对。例如,我们可以用以下代码来构造一个字典:``````在这个例子中,我们用大括号{}来表示这是一个字典,然后用冒号:来分隔键和值。

Python栈_基的博客 295

Python访问字典,如何避免键不存在导致的报错?

在Python编程中,字典是一种非常强大的数据结构,用于存储和管理键值对**。它的快速检索能力使得字典在数据处理中非常有用。**本文将介绍几种避免这种错误的技巧,特别适合Python编程的初学者。1、使用get()方法。它允许你从字典中检索值,如果键不存在,它将返回None,或者你可以指定一个默认值,这样可以避免KeyError。2、使用in关键字检查键的存在性在尝试访问键之前,使用in关键字检查键是否存在于字典中是一种直接的方法。1、使用字典推导式字典推导式可以结合get()方法,

GLB_0627的博客 1479

【Python合集】全面掌握Python基础知识,建议收藏

Python中有6个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),每种类型有其固有的属性...

fengdu78的博客 495

如何学python 正则表达,如何学python编程语言

大家好,小编为大家解答如何学python 正则表达的问题。很多人还不知道如何学python编程语言,现在让我们一起来看看吧!Python现在非常火,语法简单而且功能强大,很多同学都想学Python!那么Python应该如何学习呢?

Z77888_的博客 744

Python编程菜鸟教程:从入门到精通的完全指南_python菜鸟教程

介绍NumPy、Pandas、Matplotlib等库在数据科学中的应用,以及如何使用Python进行数据处理、分析和可视化等操作。

2328
上一篇: 一行Python代码玩遍童年的小游戏
下一篇: 各路Python大佬都在用Pycharm背景图,再不用就out了
Python编程_可乐
博客等级 码龄6年 917粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值