当前位置: 首页 > 后端技术 > Python

Python学习系列——高级特性学习(三)

时间:2023-03-26 15:29:56 Python

今天进入高级特性的学习,其实就是如何更轻松的写代码。高级特征切片要记住的关键是切片时要包括头部而不是尾部!!!之前在学习基本类型的时候提到过这个特性,就是截取字符串或者列表的一部分。list=['one','two','three','four','five']#取出list的前三个元素组成一个新的listprint(list[0:3])operationresult:['one','two','three']list[0:3]表示从索引0开始到索引3,但不包括索引3。即索引0、1、2正好是3个元素.如果第一个索引为0,它仍然可以省略。list=['one','two','three','four','five']#取出list的前三个元素组成新的listprint(list[:3])runningresult:['one','two','three']python支持倒数切片,记住倒数第一个元素的索引是-1。list=['one','two','three','four','five']#取出list倒数第三之前的所有元素,组成新的listprint(list[:-3])运行结果:['one','two']最后还有一个可以按照一定的规则得到list=['one','two','three','four','five']#allelementsineach每两次取一个元素print(list[::2])runresults:['one','three','five']通过for循环迭代遍历一个list。list=['one','two','three','four','five']forvalueinlist:#打印出list中的每一个元素print(value)results:onetwothreefourfive可以遍历字典key和value:y={'a':1,'b':2,'c':3}forainy.keys():print(a)forbiny.values():print(b)运行结果:abc123listgenerationlistgeneration是ListComprehensions,是Python内置的一个非常简单但功能强大的生成器,可以用来创建列表。pythonrange()函数创建一个整数列表,通常用于for循环。#如果只是简单的生成一个整数列表,那么我们可以直接使用range(),但是如果我们需要生成一个复杂的列表,就需要一个listgeneration。#生成一个1到10的列表l=range(1,11)print(l)#生成一个1到10的正方形列表t=[x*xforxinrange(1,11)]print(t)results:[1,2,3,4,5,6,7,8,9,10][1,4,9,16,25,36,49,64,81,100]也可以生成更复杂的条件列表#生成一个从1到10的偶数平方listl=[x*xforxinrange(1,11)ifx%2==0]print(l)results:[4,16,36,64,100]生成器我们可以通过列表生成器生成所有符合要求的列表,但是如果我们要生成一个非常大的列表怎么办?在Python中,有一种在循环中计算的机制,称为生成器:generator。#创建一个列表l=[x*xforxinrange(1,11)ifx%2==0]print(l)#创建一个生成器g=(x*xforxinrange(1,11)ifx%2==0)print(g)runningresult:[4,16,36,64,100]at0x000001C600C81B30>创建L和g的区别在于最外层的[]和(),L是一个列表,g是一个生成器。您可以使用next(g)打印生成器元素。每次调用next(g)时,都会计算g的下一个元素的值,直到计算完最后一个元素。当没有更多元素时,将抛出StopIteration错误。g=(x*xforxinrange(1,11)ifx%2==0)print(next(g))print(next(g))print(next(g))print(next(g))print(next(g))print(next(g))Runningresult:4163664100Traceback(mostrecentcalllast):File"D:/WorkSpace/Study/pythonTest/dataType.py",第7行,在print(next(g))StopIteration当然也可以使用for循环来迭代,无一例外。g=(x*xforxinrange(1,11)ifx%2==0)forvalueing:print(value)运行结果:4163664100迭代器可以被next()函数调用并一直返回到next值的对象称为迭代器:Iterator。您可以使用isinstance()来确定对象是否是Iterator对象:a=isinstance((xforxinrange(10)),Iterator)print(a)a=isinstance([],Iterator)print(a)a=isinstance({},Iterator)print(a)a=isinstance('abcd',Iterator)print(a)运行结果:TrueFalseFalseFalse所有可以应用于for循环的对象都是Iterable类型;所有可以应用于next()函数的对象都是Iterator类型,代表惰性计算序列;list、dict、str等集合数据类型是Iterable但不是Iterator,但是可以通过iter()函数得到一个Iterator对象。#通过iter()获取一个Iterator对象a=isinstance(iter([]),Iterator)print(a)a=isinstance(iter({}),Iterator)print(a)a=isinstance(iter('abcd'),Iterator)print(a)运行结果:TrueTrueTrue部分内容参考:https://www.liaoxuefeng.com/w...