当前位置: 首页 > news >正文

python高级特性简介

切片

切片就相当于其他语言中的截断函数,取部分指定元素用的。

1

2

3

4

5

6

7

8

L=list(range(100))

#利用切片取部分元素

print(L[0:10])#取从索引从0到9的前10个元素

print(L[-10:])#取最后10个元素

print(L[10:20])#取从索引10到19的10个元素

print(L[:10:2])#从前10个元素中每两个取一个元素

print(L[::10])#所有元素中每10个取一个元素

运行结果:

取从索引从0到9的前10个元素: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
取最后10个元素: [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
取从索引10到19的10个元素: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
从前10个元素中每两个取一个元素: [0, 2, 4, 6, 8]
所有元素中每10个取一个元素: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

迭代(Iteration)

迭代,即遍历。使用for循环的时候,只要是作用于一个可迭代对象,for循环就能正常运行。

判断一个对象是够是可迭代对象:

1

2

3

4

5

fromcollectionsimportIterable

print('字符串 is Iterable ?',isinstance('abc',Iterable))

print('list is Iterable ?',isinstance([1,2,3],Iterable))

print('整数 is Iterable ?',isinstance(123,Iterable))

运行结果:

字符串 is Iterable ? True
list is Iterable ? True
整数 is Iterable ? False

遍历可迭代对象的几种方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#遍历字符串:

forchin'abc':

print(ch)

#遍历list

L=['A','B','C']

fortmpinL:

print(tmp)

fori,valueinenumerate(L):

print(i,':',value)

#遍历dict

d={'1':'111','2':'222','3':'333'}

forkey,vind.items():

print('key:',key,'value:',v)

列表生成式

常见的list生成方式:

1

list(range(1,11))

然而通过python内置的列表生成式,你可以换不同的姿势生成list,你可以这样:

1

2

3

[x*xforxinrange(1,11)]

#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这样:

1

2

3

[x*xforxinrange(1,11)ifx%2==0]

[4,16,36,64,100]

还可以这样:

1

2

3

[m+nformin'ABC'fornin'XYZ']

['AX','AY','AZ','BX','BY','BZ','CX','CY','CZ']

是不是很涨姿势? 哈哈~

生成器(generator)

通过上面的列表生成式,我们可以直接创建一个列表。但是受内存限制,列表容量肯定是有限的。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环过程中不断推算出后续的元素呢?这样讲就不必创建完整的list,从而节省大量空间。在Python中,这种一边循环一边计算的机制,成为生成器:generator.

创建一个生成器最简单的方法: 把list的[]改成()

1

2

3

4

5

6

7

8

9

L=[x*xforxinrange(1,10)]

print(L)

g=(x*xforxinrange(1,10))

print(g)

//运行结果:

[1,4,9,16,25,36,49,64,81]

<generatorobject<genexpr> at0x10cc14938>

而且,generator也是可迭代对象,可以通过for来遍历。

定义generator的另一种方法:

1

2

3

4

5

6

7

8

9

deffib(max):

n,a,b=0,0,1

whilen <max:

yieldb

a,b=b, a+b

n=n+1

return'done'

print(fib(6))

如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。

迭代器(Iterator)生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

http://www.jsqmd.com/news/704629/

相关文章:

  • 解锁B站缓存视频:m4s-converter如何让你珍藏的内容重获新生
  • 【饭菜】:油茶面的制作
  • Transformers.js:在浏览器中运行200+AI模型的革命性突破
  • ARM Cortex-R5处理器架构与实时系统优化实践
  • 虚幻5.7使用后期处理体积关闭自动曝光
  • Python玩转PDF的各种骚操作
  • 如何在3分钟内完成音频转文字:AsrTools终极免费解决方案
  • 商业保险的庖丁解牛
  • 布隆过滤器(Bloom Filter)技术详解
  • 2026年3月专业的304不锈钢工字钢供应商推荐,304不锈钢工字钢/不锈钢工字钢,304不锈钢工字钢厂家哪家强 - 品牌推荐师
  • Git04-同步1-2:在feat/B分支上同步origin/main新代码【git fetch origin⮕git rebase origin/main】
  • 术语俗话 --- 什么是DBI,和hook什么区别
  • 仅限首批200家技术团队获取:Docker AI沙箱性能-安全平衡模型(Latency <8ms CVE拦截率99.97%)
  • Cursor Pro免费激活指南:3步解锁AI编程完整功能
  • Visual C++运行库修复工具终极指南:从故障诊断到批量管理
  • 3步轻松备份QQ空间所有历史说说:GetQzonehistory完整指南
  • 别再死记硬背公式了!用Python的NumPy库5分钟搞定矩阵特征值与特征向量计算
  • MCP 2026固件级漏洞修复全流程,含华为/思科/Juniper设备兼容性适配表(附厂商未发布的Beta补丁包)
  • 终极配置指南:如何让你的Honey Select 2游戏体验全面升级
  • 跨模态特征崩塌问题全解析,手把手修复CLIP+PointPillar+ASR联合训练中的语义漂移
  • 为什么阿里的小游戏有支付宝和淘宝两个平台在做?
  • 如何在5分钟内用Python打造你的专属微信智能助手:WechatBot完整指南
  • 从浏览器新标签页到个人工作台:NewTab-Redirect的个性化革命
  • 揭秘Cursor Free VIP:如何免费解锁AI编程的完整体验
  • 借助AI设计让用户“根本停不下来”的游戏机制
  • 百万医疗险的庖丁解牛
  • 手把手教你用VASP和p4vasp模拟STM图像:从DOS计算到PARCHG文件处理
  • 2026年人工智能论文降AI工具推荐:算法研究和模型分析部分降AI方案
  • GSE-Advanced-Macro-Compiler:重新定义魔兽世界技能自动化
  • Windows Defender 深度卸载:创新模块化架构彻底释放系统性能