python高级特性简介


Posted in Python onAugust 13, 2020

Python中的五种特性:切片,迭代,列表生成式,生成器,迭代器。

切片

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

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循环就能正常运行。

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

from collections import Iterable

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

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

#遍历字符串:
for ch in 'abc':
  print(ch)

#遍历list
L = ['A','B','C']
for tmp in L:
  print(tmp)

for i,value in enumerate(L):
  print(i,':',value)

#遍历dict
d = {'1':'111','2':'222','3':'333'}
for key,v in d.items():
  print('key:',key,'value:',v)

列表生成式

常见的list生成方式:

list(range(1, 11))

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

[x * x for x in range(1,11)]

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

这样:

[x * x for x in range(1, 11) if x % 2 == 0]

[4, 16, 36, 64, 100]

还可以这样:

[m + n for m in 'ABC' for n in 'XYZ']

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

是不是很涨姿势? 哈哈~

生成器(generator)

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

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

L = [x * x for x in range(1,10)]
print(L)

g = (x * x for x in range(1,10))
print(g)

//运行结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
<generator object <genexpr> at 0x10cc14938>

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

定义generator的另一种方法:

def fib(max):
  n,a,b = 0,0,1
  while n < max:
    yield b
    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。

可以使用isinstance()判断一个对象是否是Iterator对象:

from collections import Iterator
print('list is Iterator ?',isinstance([], Iterator))
print('dict is Iterator ?',isinstance({}, Iterator))
print('string is Iterator ?',isinstance('123', Iterator))

//运行结果:
list is Iterator ? False
dict is Iterator ? False
string is Iterator ? False

以上就是python高级特性简介的详细内容,更多关于python高级特性的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
跟老齐学Python之折腾一下目录
Oct 24 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python中random模块用法实例分析
May 19 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
Python math库 ln(x)运算的实现及原理
Jul 17 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
利用python中集合的唯一性实现去重
Feb 11 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
Python如何对XML 解析
Jun 28 Python
python爬取新闻门户网站的示例
Apr 25 Python
Pytest如何使用skip跳过执行测试
Aug 13 #Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 #Python
Python logging模块原理解析及应用
Aug 13 #Python
matplotlib基础绘图命令之imshow的使用
Aug 13 #Python
使用jupyter notebook运行python和R的步骤
Aug 13 #Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 #Python
Python如何读写CSV文件
Aug 13 #Python
You might like
农民C键的运用技巧
2020/03/04 星际争霸
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
初学Javascript的一些总结
2008/11/03 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
pytorch 模型可视化的例子
2019/08/17 Python
django教程如何自学
2020/07/31 Python
Python 中如何写注释
2020/08/28 Python
python 通过exifread读取照片信息
2020/12/24 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
个人担保书格式范文
2014/05/12 职场文书
开学典礼策划方案
2014/05/28 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android