python语法糖之切片 object[start_index:end_index:step]

在撸代码中,我们经常会遇到需要对list或者str类型的对象进行取值操作,如果是只取某一个值,那难不倒大家,直接list[i] (i为索引下标)就好了,但如果要取某一部分的数据,这该咋整???

来来来,走过路过,千万不要错过,语法糖之切片了解一下?经鉴定,这语法糖符合真香定律~~~

举个栗子:

有个 list1 = [1, 2, 3, 4, 5, 6]  要得到[2, 4, 6] 咋整?其他语言多数是通过循环取值后再赋值的方式实现的(那些后来悄咪咪加了切片概念的语法请绕道~~~如:"卷王"java中Arrays里面增加的copyOfRange(被切片的数组, begin_index, end_index),又或者C# 9 版本默默添加的切片等)

python语法自带了一个很香的语法糖——切片!上题只需要一步就搞定了!

 当然,题做出来不是最重要的,重要的是理解下切片是个什么东东~~~

切片的标准表达式为 object[start_index:end_index:step]遵循左闭右开原则(即:start_index为闭区间,end_index为开区间)

start_index :开始取值的位置,可空,默认为索引 0(即数据起点)

end_index :结束取值的位置,可空,默认为索引 len(obj)(即数据终点)

step :步长,可空,默认为1,正数表示取值方向为从左往右,负数则表示取值方向为从右往左

数据的取值方向非常重要!

数据的取值方向非常重要!

数据的取值方向非常重要!

起点终点
list1123456
正索引012345
负索引-6-5-4-3-2-1
取值方向:
step为正数:从左往右→→→
step为负数:←←←从右往左

正向的切片还是比较好理解的,网上教程N多,我就不在锦上添花了,只想把最难理解的反向切片拎出来做个记录——

还是举个栗子:

list1 = [1, 2, 3, 4, 5, 6]

print(list1[1:-6:-1])的结果为[2]

这个结果怎么来的呢?分布化解——

第一步:list1[1::-1]  结果为:[2, 1]  ——  表示从索引为1的地方开始,从右往左取值

第二步:list1[:-6:-1] 结果为:[6, 5, 4, 3, 2]  ——  表示从右往左取值,直到-6位置结束,但不包含-6位置对应的value [1]

第三步:list1[1:-6:-1] 结果为:[2]  ——  表示把第一步和第二步的结果求交集,得到公共值[2]

 

 基本思路就是这样,如果还有不理解的,自己写个测试函数,多练几遍就懂啦!

最后在感慨下:这语法糖真的甜~~~!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下方式修改代码,以将滤波后的数据生成为CSV格式并存入一个新的CSV文件中,并在图形中显示滤波前后的波形。 ```python import pandas as pd import numpy as np import pywt import matplotlib.pyplot as plt wavelet = 'db4' level = 5 coeffs = pywt.wavedec(flow, wavelet, level=level) # 将系数除第一个外都置为0 for i in range(1, len(coeffs)): coeffs[i] *= 0 # 重构滤波后的数据 filtered_flow = pywt.waverec(coeffs, wavelet) # 将滤波后的数据生成CSV格式并存入新文件 data['Filtered Flow'] = np.nan data['Filtered Flow'][start_index:end_index] = filtered_flow[start_index:end_index] filtered_data = data[start_index:end_index] # 选择滤波后的数据部分 filtered_data.to_csv('filtered_data.csv', index=False) # 绘制波形图 fig, ax = plt.subplots() ax.plot(x[start_index:end_index], flow[start_index:end_index], label='Original') ax.plot(x[start_index:end_index], filtered_flow[start_index:end_index], label='Filtered') ax.legend() plt.show() ``` 这段修改过的代码将会: - 根据给定的Wavelet和级别对数据进行小波分解。 - 将除第一个系数外的其他系数置零,实现滤波操作。 - 使用逆小波变换重构滤波后的数据。 - 将滤波后的数据存入原始数据的新列,并将该部分数据保存为CSV格式的新文件。 - 绘制原始数据和滤波后的数据的波形图。 请注意,您需要将代码中的"flow"替换为您实际的数据,并确保导入了所需的库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值