Python3 高级特性

xiaoxiao2021-02-28  81

Python3 高级特性

切片

list、tuple、string都可以使用切片功能第一个元素的索引为0,倒数第一个元素的索引为-1

迭代

可迭代对象 * 集合数据类型:list、tuple``dict``set``str * generator,包括生成器和带yield的generator function

可以采用collections模块的Iterable类型判断是否是可迭代对象

>>>from collections import Iterable >>>isinstance('abc',Iterable) True >>>isinstance([1,2,3],Iterable) True >>>isinstance(123,Iterable) False list、tuple的迭代可以采用for...in完成。dict的存储与list的顺序排列不同。默认dict迭代的是key。 如果要迭代value,可以用for value in d.values()。 如果要迭代key、value,可以用for k,v in d.items()对list实现类似Java的下标循环,采用enumerate可以把一个list变成索引-元素对,可以在for同时迭代索引和元素本身 for i,value in enumerate(['A','B','C']) print(i,value) 0 A 1 B 2 C

列表生成式

生成[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11))生成[1x1,2x2,3x3,...,10x10],用列表生成式 >>>[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' ro n in 'XYZ'] ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ'] 列出当前目录下所有文件和目录名 >>>import os >>>[d for d in os.listdir('.')] #os.listdir可以列出文件和目录 把list中所有字符串变成小写 >>>L=['Hello','World','IBM','Apple'] >>>[s.lower() for s in L] ['hello', 'world', 'ibm', 'apple']

生成器

概念

生成器把结果保存为生成器的状态,在每次进行迭代时返回一个值,直到遇到Stop Iteration异常结束

语法

生成器表达式:通过list解析语法,把[]换成() >>>L=[x*x for x in range(10)] >>>L [0,1,4,9,16,25,36,49,64,81] >>>g=(x*x for x in range(10)) >>>g <generator object <genexpr> at 0x1022ef630> 生成器函数:在函数中出现了yield关键字,那么该函数不再是普通函数,而是生成器函数,Python解释器会将其视为一个generator

普通函数和generator生成器的区别

普通函数调用直接返回结果,generator函数的调用,返回一个generator对象;(调用generator时可以先创建一个对象,再用next()方法不断获得下一个返回值,但实际中通常用for循环实现)generator在执行过程中,遇到yield就中断,下次又继续执行

迭代器

可以被next()调用并不断返回下一个值的对象称为迭代器Iterator生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。 把list、dict、str等Iterable变成Iterator可以使用iter() >>>isinstance(iter([]),Iterator) True >>>isinstance(iter('abc'),Iterator) True 凡是可作用于for循环的对象都是Iterable类型凡是可作用于next()的对象都是Iterator类型
转载请注明原文地址: https://www.6miu.com/read-33101.html

最新回复(0)