Python学习07:高级特性
Posted CQ小子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习07:高级特性相关的知识,希望对你有一定的参考价值。
本文学习Python的笔记,仅供参考
本文介绍一下Python的高级特性:切片,迭代,列表生成器,生成器
切片
对于List和tuple数据结构,会经常取其中的部分进行操作,如L = [1,2,3,4,5,6] ,取前三个元素,这样的话需要L[0],L[1],L[2] 这样操作才能依次取出,如果多的话比较繁琐。Python中的切片功能就很nice的完成这个任务
L = [22,33,44,55,66,77,88,99]
print(L[0:3])
输出结果:
======================== RESTART: E:/python/Slice.py ========================
[22, 33, 44]
可见L[0:3]代表从索引0开始取元素,直到3为止,但是不包括3,位0,1,2的对应的数据。
当然索引页可以不从0开始 如 L[1,3] ,则取出33,44
>>> L = [22,33,44,55,66,77,88,99]
>>> L[1:3]
[33, 44]
可不可以到这取,当然也是犀利的可以,方便上完全碾压C语言,-1代表最后一个了
>>> L[-1]
99
那取后几个个呢? L[-5:-2]
>>> L[-5:-2]
[55, 66, 77]
有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。
迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
在Python中,迭代是通过for ... in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的。比如代码
L=[22,33,44,55,66,77,88,99]
i =0
for i in L:
print(i)
完成迭代遍历
====================== RESTART: E:/python/Iteration.py ======================
22
33
44
55
66
77
88
99
列表生成式
这个主要解决如何生成List的,一般情况下我们使用,我们看到这个比较有规律的,连续的数字,那比较复杂的呢?
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
比如我要生成一个[1x1,2x2,3x3 ... 10x10]的列表,可以运用列表生成式
>>> [x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:
>>> import os
>>> [d for d in os.listdir('.')]
['a.py', 'function.py', 'Iteration.py', 'qiepian.py', 'Slice.py', 'test.py', 'while.py']
生成器
在Python中,这种一边循环一边计算的机制,称为生成器:generator。实际上这个就是一个动态的生成list,一次生成过多的而不用浪费内存空间。
上面生成列表的[]修改为()即可生成g
>>> g= (x*x for x in range(1,11))
>>> g
<generator object <genexpr> at 0x00000057B167CFC0>
这样生成了一个generator,我们看到的应该是一个地址,可以通过next函数打印list中的每一个元素,一直到最后一个元素
>>> next(g)
1
>>> next(g)
4
>>> next(g)
9
>>> next(g)
16
>>> next(g)
25
>>> next(g)
36
>>> next(g)
49
>>> next(g)
64
>>> next(g)
81
>>> next(g)
100
>>> next(g)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
next(g)
StopIteration
当然是用next 太复杂了,可以使用for循环遍历了。
以上是关于Python学习07:高级特性的主要内容,如果未能解决你的问题,请参考以下文章