python强势来袭-18-列表循环高级操作

doris批量导出表结构python脚本 立即下载

前言

针对循环和函数在项目使用过程中的一些更加有使用价值的操作进行分析和讲解:

  • 循环部分

    • 列表构建器
    • 列表动态构建器
    • 循环操作序列对象
    • 循环迭代遍历数据
  • 函数部分

    • 函数递归

    • 参数使用函数

    • 函数中返回函数

    • 匿名函数

    • 偏函数

循环操作

1.列表构建器
常规情况下,我们定义列表的语法如下

lix = ["列表元素列表"]

如果在某些情况下,我们要定义一个1~100的列表,是一件特别麻烦的事情,手工编码就会变得非常的繁琐,此时,我们可以使用第一种方式来进行列表的构建

lix = list(range(1, 101))
执行结果:lix = [1, 2, 3, 4, 5, 6, ......]

但是,此时如果我们想要的不是自然数,而是每个数字的平方呢?
我们可以这么做

lix = [];
for x in range(1, 101):
    lix.append(x ** 2)
执行结果:lix = [1,4,9,16,25.....]

但是通过这样的方式循环迭代比较繁琐,可以通过列表构建器来直接实现

lix = [x * x  for x in range(1, 101)]
执行结果:lix = [1,4,9,16,25.....]

# 其实列表构建器中,就是一个简单的表达式操作

同样的,在列表构建器的表达式中,可以添加简单的条件处理

lix = [x * x for x in range(1, 101) if x % 2 == 0]
执行结果:lix = [4,16,36.....]

也可以在循环过程中,来使用多层循环嵌套,实现更加复杂的效果

lix = [x + y  for x in "abc" for y in "xyz"]
执行结果:['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

1.2 列表动态构建器

但是我们通过前面的学习已经知道,这些数据都是加载到内存中的,如果列表中的数据量比较大的情况下,内存消耗是比较严重的
在某些情况下,我们只需要使用列表中的一部分数据,后面的数据并不是特别关心,如:通过列表来记录一个符合某种规则的序列,每次我们只是关心下一个数据,并不关心后面的N条数据,应该怎么做呢?比如我们需要一个奇数列表

# 常规构建器的做法
lix = [2*x + 1 for x in range(1, 101)]
# 执行结果:[1,3,5,7,9,11,13,15,17.....]
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 常规构建器可以直接构建生成
# 但是存在问题,如果一次构建的数据量太大,会严重占用内存
# 我们在使用该列表的时候,有可能只是使用前10项
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 使用列表动态构建器
lix = (2 * x - 1 for x in range(1, 101))
# 执行结果:print (lix) --> <generator object <genexpr> at 0x7f232e462048>
next(lix)
# 执行结果:1
next(lix)
# 执行结果:3
next(lix)
# 执行结果:5
next(lix)
# 执行结果:7
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 列表动态构建器
# 和构建器基本没有区别,创建的时候列表中是没有数据的
# 必须通过next()函数来获取列表中的下一条数据
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

3. 循环列表

常规循环列表的方式

lix = ["远古巫灵泽拉斯", "机械先驱维克托", "惩戒之箭维鲁斯", "龙血武姬希瓦娜"]
for x in lix:
    print(x)
执行结果:
远古巫灵泽拉斯
机械先驱维克托
惩戒之箭维鲁斯
龙血武姬希瓦娜

如果此时,我想象其他语言一样,在循环过程中操作当前正在循环的元素的下标呢?
可以通过enumerate()函数对列表进行处理

lix = ["远古巫灵泽拉斯", "机械先驱维克托", "惩戒之箭维鲁斯", "龙血武姬希瓦娜"]
for index, item in enumerate(lix):
    print(index, item)
执行结果:
0 远古巫灵泽拉斯
1 机械先驱维克托
2 惩戒之箭维鲁斯
3 龙血武姬希瓦娜

4. 循环字典

因为列表、元组、集合中存储的都是一个个独立的元素,对列表的循环比较简单
那么如果循环key:value键值对的字典应该怎么做呢

我们回顾一下字典中常用的一些函数
dict.items();返回字典中的每一组key:value数据
dict.keys();返回字典中的所有的key组成的集合
dict.values();返回字典中所有的value组成的列表

lid = {"远古巫灵":"泽拉斯", "机械先驱":"维克托", "惩戒之箭":"维鲁斯", "龙血武姬":"希瓦娜"}
# 通过keys()循环遍历字典的key
for k in lid.keys():
    print(k)
# 通过values()循环遍历字典的value
for v in lid.values():
    print(v)
# 通过items()循环遍历所有的字典数据
for k, v in lid.items():
    print(k, v)

5. 循环判断

最后我们需要补充一个非常重要的东西,通常情况,我们对于python中的序列对象可以进行循环处理,那么首先需要判断一下我们要处理的数据是不是循环,如果不是循环就会出现错误

# 循环字符串
s1 = "abc"
for x in s1:
    print(x)
# 执行结果
~a
~b
~c
# 循环整数
s2 = 100;
for x in s2:
    print(x)
# 执行结果:出现报错提示int对象不是iterable
~Traceback (most recent call last):
~File "<stdin>", line 1, in <module>
~TypeError: 'int' object is not iterable

我们看到,对于非序列对象,出现对象不是iterable的错误提示
iterable是Python中的迭代对象,序列对象一般都是迭代对象
那怎么判断一个对象是否迭代对象呢?

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 判断一个对象是否iterable迭代对象
# 首先通过from collections import Iterable语句来在当前
# python文件中引入collections模块中的Iterable类型
# 然后通过isinstance来判断我们要循环的对象是否Iterable对象
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
s1 = "abc",
s2 = [1,2,3,4]
s3 = (1,2,3,4)
s4 = {1,2,3,4}
s5 = {"1":"a", "2":"b", "3":"c"}
s6 = 100
执行结果
>>> isinstance(s1, Iterable)
True
>>> isinstance(s2, Iterable)
True
>>> isinstance(s3, Iterable)
True
>>> isinstance(s4, Iterable)
True
>>> isinstance(s5, Iterable)
True
>>> isinstance(s6, Iterable)
False

那这样就好办了,如果我们要遍历指定的数据,首先判断是否是迭代对象,是迭代对象我们再进行迭代操作就可以了

# 导入collections模块中的Iterable对象
from collections import Iterable
# 遍历数据
s1 = [1,2,3,4]
if isinstance(s1, Iterable):
    for x in s1:
        print(x)

s2 = 10000
if isinstance(s2, Iterable):
    for x in s2:
        print(x)
# 执行结果不会出现报错了

本次内容主要讲解了实际项目中经常用到的序列对象列表的高级使用方式,以及使用for循环进行序列对象循环遍历过程中的几种特殊的的使用方式。

如果你看到了这里,觉得文章写得不错可以加个关注!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。

最后针对Android程序员,除了以上内容,我自己整理了一套最新的python系统资料可以免费送给大家,从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。需要这些资料的朋友,可以进python学习交流群:851211580免费领取 。

希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!后续还会更新技术干货,谢谢您的支持!

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真 本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。 阅读详情

相关推荐

dxf-viewer 查看器

dxf-viewer SDK 的示例,它是一个基于 Three.js 和 Vue3 构建的基于 WebGL 的 BIM 模型查看器。它用于查看 DWG/DXF/PDF 文件。面积测量 - 角度测量 -标记。

qq_25547755的博客 865

python使用doris教程

1. 使用insert or update语句操作数据时,出现如下所示的提示信息。原因:登陆的帐号对表没有写入和删除的权限,解决方法:申请对表的操作权限。

yqj234的专栏 2046

STM32踩坑--NoST-LINK detected

这里出现的NoST-LINK detected是没有扫描到端口 在我使用一段Fly-MCU后,有一天突然发现出现如上错误,再检查的过程中检查以下几点 1.STM32 魔术棒的设置 1.1Debug设置 1.2 utilities 设置没有问题,与原来一样又看了下端口——在设备管理器中;也没有问题 ...

qq_53002477的博客 2万+

Python-大文件入Doris方案(切割方式)

【代码】Python-大文件入Doris方案(切割方式)

健身看书环游世界 1505

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8855

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

Python连接Doirs查询实战

Python连接Doirs查询实战

wangleigiser的博客 6403

手把手教学,Python 游戏编程之实现飞机大战(含源代码)

我想大家都是有玩过类似飞机大战的射击类游戏,也享受目标被消除通过后带来的愉悦感。那么如果用Python来实现飞机大战游戏?下面就跟大家一起用Python来做一个小游戏,不仅可以从中感受到乐趣,还可以提升自己的能力。

veratata的博客 1万+

PyPI--python软件仓储库安装Doris

The Python Package Index (PyPI) is a repository of software for the Python programming language. 1、PyPI官网:https://pypi.org/ 直接可搜到doris5.0.3,也可下载源码 2、pip用户手册:https://pip.pypa.io/en/stable/user_g...

IvanLJF的专栏 3498

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 650

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(4)

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(4)

phmatthaus的专栏 1532

【Python量化】流程控制详解:用if-else+循环实现股票筛选与持仓判断

缩进错误:if/for/while下方代码必须缩进,否则直接报错或逻辑错乱条件写反:把“大于均线写成小于均线”,直接导致策略完全反向死循环:while循环忘记设置终止条件,程序卡死重复交易:判断条件不结合持仓状态,导致一直触发买入信号遍历索引混乱:for循环遍历列表时不要手动写索引,直接遍历元素最稳。

fairyran27的博客 253

【ACP】2025-最新-疑难题解析-1

即用户手动释放时,因实例释放保护开启,不会释放该 ECS 实例(不同云厂商具体实现有差异,但题目场景下选 C )。结合题目中标记,答案为。综上,答案选 B。综上,答案选 C。综上,答案选 D。综上,答案选 A。综上,答案选 A。综上,答案选 C。综上,答案选 D。综上,答案选 A。

jundao1997的专栏 364

python计算百分比_以股票RSI指标为例,学习Python发送邮件功能!

本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得。在之前的系列文里,大家能看到K线,均线,成交量的案例,在本文里,大家能看到通过RSI案例讲述Python邮件编程的知识点,在后继系列文里,大家还能看到MACD,BIAS,KDJ等指标相关案例。1 RSI指标的原理和算法描述相对强弱指标(RSI)...

weixin_40002224的博客 4775

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Python3 查询手册学习】,完整版PDF开放下载_python速查手册·模块卷(全彩版) pdf(1)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。

m0_60721649的博客 526

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python求数的绝对值一定是正数_以股票RSI指标为例,学习Python发送邮件功能!

本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得。在之前的系列文里,大家能看到K线,均线,成交量的案例,在本文里,大家能看到通过RSI案例讲述Python邮件编程的知识点,在后继系列文里,大家还能看到MACD,BIAS,KDJ等指标相关案例。1 RSI指标的原理和算法描述相对强弱指标(RSI)...

weixin_42121905的博客 1543

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)

本人之前写过若干“给程序员加财商”的系列文,目的是通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得。 在之前的系列文里,大家能看到K线,均线,成交量的案例,在本文里,大家能看到通过RSI案例讲述Python邮件编程的知识点,在后继系列文里,大家还能看到MACD,BIAS,KDJ等指标相关案例。 1 RSI指标的原...

weixin_30536513的博客 7427

迭代器和生成器

一迭代器 1.1)什么是可迭代? 凡是可以使用for循环取值的都是可迭代的 列表 字典 元祖 字符串 集合 range 文件句柄 enumerate 这些都是可迭代的 for i in (1,2,3,4): print(i)1.2)可迭代协议可迭代协议:内部含有_iter_方法都是可迭代的 迭代器协议:内部含有_next_方法都是迭代器迭代器的优势 节省内存#快#...

ditiao1196的博客 150

324页清华教授撰写【Python3 菜鸟查询手册学习】笔记在互联网上火了,完整版PDF开放下载_菜鸟笔记pdf下载

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费。

m0_56175058的博客 355

编程语言难度评估框架:从Python到汇编的10级排名与选型指南

编程语言的学习曲线和工程实践难度是开发者进行技术选型与学习规划的核心考量。从概念上讲,编程语言的难度并非单一维度,而是由入门门槛、精通成本、生态成熟度及心智负担等多个层面共同构成。其原理在于不同语言的设计哲学、类型系统、内存管理模型及并发范式存在本质差异,这直接影响了开发效率与代码质量。从技术价值看,理解语言难度有助于团队匹配技术栈与项目需求,平衡开发速度与系统可靠性。在应用场景上,快速原型开发常选用Python等脚本语言,而高性能系统、嵌入式开发则需考虑Rust、C++等系统级语言。本文基于工程实践视角,

weixin_34133829的博客 352

Python实战:构建自动化市场复盘分析系统,从数据到决策

在量化投资和数据分析领域,数据获取与处理是核心基础。通过Python生态中的Pandas、NumPy等库,可以高效地进行数据清洗、计算和可视化,将原始市场数据转化为有价值的洞察。其技术价值在于将主观、零散的市场观察,转化为一套客观、可复用的自动化分析框架,极大地提升了研究效率和决策的科学性。这一方法广泛应用于个人投资者复盘、量化策略研究以及市场监控等场景。本文以A股市场为例,详细演示了如何使用AKShare获取行情数据,并系统性地计算市场广度、量价、资金流向等关键指标,最终通过Matplotlib生成可视化

weixin_30647065的博客 422

深度学习入门与PyTorch实战:从原理到环境搭建的完整学习路线

深度学习作为机器学习的重要分支,依靠多层神经网络从数据中自动学习特征表示,已广泛用于图像分类、目标检测、自然语言处理等场景。理解神经网络的基本原理,如张量运算、自动求导、梯度下降与反向传播,是掌握深度学习的基础。PyTorch凭借动态计算图、灵活的nn.Module模型构建和成熟的训练生态,成为工业界与学术界最主流的深度学习框架之一。对于初学者而言,从环境搭建与数据加载入手,逐步实现图像分类模型的训练、评估与迁移学习,是快速建立工程实践能力的有效路径。本文围绕深度学习核心概念与PyTorch框架展开,提供一

weixin_34166472的博客 382

2026年AI时代程序员学习路线图:从零基础到拿大厂Offer的完整规划(2万字深度长文)

本文为不同阶段的程序员绘制完整学习路线图,覆盖零基础入门到架构深挖四个阶段,附在职跳槽和应届校招时间规划模板及常见误区避坑指南。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 1080

Python构建板块热度评分系统:从盘感到数据的量化跟踪方法

在A股市场中,板块轮动是常见现象,但单纯依靠盘感捕捉热点往往滞后且难以复盘。通过数据驱动的量化分析方法,可以将叙事、资金、价格、情绪等维度转化为可计算的指标,从而系统化地跟踪板块热度变化。Python生态提供了丰富的数据接口与计算工具,例如使用akshare获取行情数据,结合涨幅、成交额、资金净流入等字段构建综合评分模型,生成每日热度排名报告。这一方法不仅适用于板块前瞻,也能用于回测验证和策略优化,帮助投资者在热点扩散前建立观察基线。本文以数据科学视角,展示如何搭建一个轻量级板块热度评分系统,从数据采集到定

weixin_30572613的博客 628
上一篇: python强势来袭-17-字符串那些事儿
下一篇: python强势来袭-19-函数又来了
python-花猫
博客等级 码龄7年 105粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值