Python-序列的高级特性

简介:

一.切片

字符串、列表、元祖可以切片,字典和集合不能切片

wKioL1mnoz7j36guAAAeS1AT-SU692.png

wKiom1mnoyGygtTDAAAbK2MFhSY747.png

wKiom1mnoyKQ1rDDAAAhQ8ZtabE883.png

wKiom1mnowLgWZfaAABkW5QhaLI290.png

wKioL1mnouyBPTAgAABox7Six0I976.png



二. 迭代
1.任何可以迭代的对象都可以用for循环遍历;
2.字典的迭代:默认是通过key进行迭代的;

集合:

wKioL1mnmJzAGO4QAAAzzKhVTNU587.png

字典:

wKioL1mnmJ2iGEgTAABJkjr3WGY838.png


3.字典的枚举:枚举只能返回返回两个值,一个是索引下标,一个是迭代的元素;

wKiom1mnmLOSqK_jAABUKsF4J3c451.png


4.for 循环里,同时引用了两个变量,在 Python 里是很常见的;
   如果要显示[(1,2),(2,3),(3,4)]怎么实现迭代显示?

wKioL1mnm1fAXjM7AAAmXfAX8A0633.png


5.怎么去判断是否可迭代

isinstance("abc",Iterable)

wKiom1mnmnOQTKszAAChiaC4vS4933.png


三.列表生成式
列表生成式,其实就是生成列表的一种方式,是python内置的;


1.简单的列表生成式
[ i*i for i in range(10) ]        返回1-10平方的一个列表;
[ fun(i) for i in l]                  对列表的每个元素执行某个函数操作;


对1-10的数做2n+1的变化

wKioL1mnm8XR8D_wAABbc1vvTNw145.png


100以内偶数的平方

wKiom1mnm9qhG7b9AAA3TW5EPMA756.png



2.for...if的嵌套


[ i*i for i in range(1,10) if i%2==0]     返回1-10之间所有的偶数
[ i for i in range(1,10) if isprime(i)]      返回1-10之间所有的质数,判断质数的函数是自定义的;

wKioL1mnm8WDpGnZAABjb6hXj3Y467.png


3.for...for...的嵌套
[ i+j for i in "abc" for j in "123"]    # 返回"abc"和"123"的所有组合;、

wKiom1mnm9ug-ghbAAAid4LRiXI206.png


4.for...for...的嵌套

转化为大写字母

wKiom1mnphOR27fSAAAopjZeAsY724.png

判断是否字符串,如果是,执行转为大写

isinstance('a',str) 判断a是否字符串

wKioL1mnvfuRnPfWAAAZLaPA7f4029.png


wKioL1mnpf7BdJb5AAA1ppY7HSw370.png

wKioL1mnpf7BdJb5AAA1ppY7HSw370.png

四.生成器


1.生成器的定义
在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,这种一边循环一边计算的机制,称为生成器(Generator)


-  列表生成式可以直接创建一个列表,但列表容量受内存的限制;
- 在Python中一边循环一边计算的机制,称为生成器(Generator);就是你需要多少,它就生成多少;

2.为什么需要生成器

通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的;
创建一个包含 100 万个元素的列表,占用很大的存储空间;


3.创建生成器的方法查看生成器元素的方式:


(1)将列表生成式的[]改为();

    使用生成器的next方法;(不常用)wKioL1mnrwbC4EH6AABsfJAlh2U957.png


(2)在定义的函数中加入yield关键字;

     生成器是可迭代的对象,直接通过for循环查看;

fib 函数定义了斐波拉契数列的推算规则,可以从第一个元素开始,推算出后续任意的元素,逻辑非常类似 generator。要把 fib 函数变成 generator,只需要把print b 改为 yield b 就可以.

     函数顺序执行,遇return语句或最后一行函数语句就返回。
     generator函数在每次调用next() 的时候执行,遇到 yield 语句返回,再次执行时从上次返回的yield 语句处继续执行。


wKiom1mnr_3wdN2zAACQcS1XGyM427.png


4.生成器应用:生产者消费者模型

例:

wKioL1mns-7SXzxsAAEPWRLcFkw514.png

wKiom1mntATxceENAADYk1htkUk659.png







      本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1961201,如需转载请自行联系原作者





相关文章
|
16天前
|
Python
数据分享|PYTHON用ARIMA ,ARIMAX预测商店商品销售需求时间序列数据
数据分享|PYTHON用ARIMA ,ARIMAX预测商店商品销售需求时间序列数据
|
14天前
|
机器学习/深度学习 运维 Python
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
|
10天前
|
数据可视化 数据挖掘 Python
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(下)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
10天前
|
数据可视化 API 开发者
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(上)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
10天前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
|
10天前
|
vr&ar Python
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
|
10天前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
|
10天前
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
|
10天前
|
数据可视化 数据挖掘 Python
Python用 tslearn 进行时间序列聚类可视化
Python用 tslearn 进行时间序列聚类可视化
|
11天前
|
数据可视化 数据处理 索引
Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析
Python用GARCH对ADBL股票价格时间序列趋势滚动预测、损失、可视化分析