高级特性的作用在于用最少的代码解决问题,代码越少效率越高
一,切片
切片的作用于包括集合,元组,字符串
[0:10]:获取集合或者字符串中第 0 个到第 9 个元素组成新数据,切片规则时包左不包右
[0:10:2]:获取第 0 个到第 9 个的元素中第 0 ,2,3,5,7,9 的元素组成新数据
[::2]:从第一个元素开始跳过一个元素获取元素组成新数据
[-3:-1]:获取倒数第三和倒数第二的元素组成新数据
二,迭代
可以使用 for x in xxx 迭代任何能迭代的数据类型,如集合,元组,tuple,字符串等
数据是否可以迭代可以使用 collections 模块的 Iterable 类型判断:
from collections import Iterable #导入模块
isinstance('abc', Iterable) # str是否可迭代
三,列表生成式
1,list(range(1,11)):[1,2,3,4,5,6,7,8,9,10] => 普通生成列表
2,[ x*x for x in range(1,5) ]:[1,4,9,16] => 根据运算结果生成列表
3,[ x*x for x in range(1,7) if x % 2 == 0]:[4,16,36] => 根据条件获取元素再进行运算生成列表
4,[ x + y for x in "AB" for y in "XY" ]:["AX","AY","BX","BY"] => 双层循环获取元素生成列表
5,[ x + y for x , y in dict.items() ] => 获取两个元素生成列表
四,生成器
列表元素可以通过运算生成,而且如果使用集合的话会造成元素过多,造成内存浪费,这个时候就可以使用生成器,generator。
generator 的元素可以用 next(generator) 来获取,也可以通过迭代过去元素
定义 generator 语句时在返回语句的地方使用 yield
,generator 会在调用 next(generator) 方法的时候运行,而运行会在遇到 yield 时停止,下一次调用 next() 时会从上一次的 yield 的地方继续执行
五,迭代器
可以使用 for 循环的对象称作为可迭代对象 Iterable
需要用 next() 作用循环的对象叫做 Iterator
,是一种惰性计算的序列,即为迭代器
可以使用
isinstance()
方法来判定是否是可迭代对象,
("abc" ,isinstance
Iterable
) ==> 如果是返回 True,否则返回 False