切片原理图(顾头不顾尾的正则原理)

  

  # [0:1] 其实只取到C, 取e则 [-1:], 如果步长为负数则倒过来取,从第几个往回取

name = "ChuiXue"
print(name[0:1])
print(name[-1:])
print(name[::-1])

  

对于可变数据类型,则可以通过切片实现数据添加修改, 如添加数据、替换数据、删除元素

number = [1, 2, 3]
# 修改第一个数据, 直接把对象依次传递进去
number[:1] = [5, 6]
print(number)
# 结果是 [5, 6, 2, 3] # 某个位置插入元素, stat = end, 等价于 +=
number[0:0] = [1.1, 2.4]
print(number) # 替换切片选中的数据, start != end
number[1:2] = [3.3, 4.4]
print(number) # 等步长替换
number[::2] = ['北门吹雪', 'beimenchuixue', 'QiNiuYun', "JinRiTouTiao"]
print(number) # 删除数据
del number[1:2]
print(number)

  

切片协议  __getitem__

  类中实现这个方法,那么这个类实例的对象就可以进行切片操作

from numbers import Integral

class BeiMenChuiXue:
def __init__(self, names):
self.names = names def __getitem__(self, item):
if isinstance(item, Integral):
return self.names[item]
else:
# 返回对象依旧尅再进行切片
return self.__class__(self.names[item]) if __name__ == '__main__':
names = ["北门吹雪", "QiNiuYun", "JinRiTouTiao", "AliYun", "TengXun"]
bei_men_chui_xue = BeiMenChuiXue(names)
new_names = bei_men_chui_xue[:]
print(new_names[1])
# 再次切片
print(new_names[:3][1])

  

经验:

  1. 切片不仅仅可以获取序列的子序列,还可以进行可变序列的添加、修改、删除等操作

  2. 对对象可切片,遵守 __getitem__协议就可切片,如果想在切片上再切片则需要返回一个对象,通过重新构建对象

Python-序列切片原理和切片协议-[start:end:step] __getitem__的更多相关文章

  1. python序列(五)切片操作

    功能:截取列表中的任何部分. 切片适用于列表.元组.字符串.range对象等类型.. 格式:[::]切片使用两个冒号分隔的3个数字来完成. 第一个数字表示切片开始位置(默认为0). 第二个数字表示切片 ...

  2. Python 序列的修改、散列和切片

    Vector类:用户定义的序列类型 我们将使用组合模式实现 Vector 类,而不使用继承.向量的分量存储在浮点数数组中,而且还将实现不可变扁平序列所需的方法. p.p1 { margin: 0.0p ...

  3. python序列的修改、散列和切片

    新Vector类 接原vector类定义的新Vector类,原向量类是二维,现定义多维向量类: from array import array import reprlib import math c ...

  4. Python序列切片的注意事项

    a=[1,2,3,4,5,6,7,8,9,10] 1)普通切片,形如array[m:n],只包含起始索引m,和不被包含在结果内的终点索引n, 注意终点索引可以大于序列的大小(长度),若终点索引大于序列 ...

  5. Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

    array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...

  6. python的高级特性:切片,迭代,列表生成式,生成器,迭代器

    python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] ...

  7. Python基础知识--Slice(切片)和Comprehensions(生成式)

    最近在Youtube的Python视频教程上学习Python相关的基础知识,视频由Corey Schafer制作,讲得十分简单明了,英文发音也比较清晰,几乎都能听懂,是一个不错的Python入门学习的 ...

  8. golang slice 切片原理

    golang 中的 slice 非常强大,让数组操作非常方便高效.在开发中不定长度表示的数组全部都是 slice .但是很多同学对 slice 的模糊认识,造成认为golang中的数组是引用类型,结果 ...

  9. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

随机推荐

  1. 两台Linux服务器文件同步

    在给公司或者学校做系统部署的时候,为了数据安全往往我们至少需要两台服务器,接下来请看: 我们要实现的是把客户端(192.168.0.1)的复制到目标服务器(192.168.0.2) 一.目标服务器 1 ...

  2. [PyTorch 学习笔记] 3.2 卷积层

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_convolution.py 这篇文 ...

  3. 接口测试中postman环境和用例集

    postman的环境使用 postman里有环境的设置,就是我们常说的用变量代替一个固定的值,这样做的好处是可以切换不同的域名.不同的环境变量,不同的线上线下账户等等场景.下面就看下怎么用吧. 创建一 ...

  4. 使用【QQ五笔的码表】转成【百度手机自定义码表】

    使用[QQ五笔码表]转成[百度手机自定义码表] QQ五笔码表先转成多多格式. 这里选用极点>>多多. 然后去掉空格. 转成GB.去掉没的字. 百度要的是这种格式. 现再用点讯工具转成 de ...

  5. Linux+Jenkins自动构建服务器包

    何时使用: 测试过程中我们需要持续构建一个软件项目,为避免重复的手动下载.解压操作,我们需要搭建一个能够自动构建的测试环境,当代码有更新时,测试人员只需点一下[构建]即可拉取最新的代码进行测试(也可设 ...

  6. 【图像增强】CLAHE 限制对比度自适应直方图均衡化

    文章目录: 目录 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 Histogram Equaliza ...

  7. h5跳转微信公众号关注页面

    最近在做h5项目,有个需求是如果用户没有关注公众号,需要引导用户跳转至微信公众号关注页面 制作一个链接,点击该链接跳转到公众号关注页面. 1.从公众平台登进入公众号 2.点击开发>>开发者 ...

  8. 用 Shader 写个完美的波浪

    前言 皮皮最近接到了一个小需求: 美术小姐姐:皮皮皮皮,你能不能做奶茶? 我:??? 美术小姐姐:就是那种,奶茶的轮廓加上动态水波纹~

  9. 对韩峰著《SQL优化最佳实践》P7 案例的质疑

    事先申明下,我的DB环境是Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production,如果与作者环境不同而 ...

  10. 为什么ping不通google.com

    前言 为什么在ping不通Google的时候,我们却可以web直接访问Google (已开启SSR 翻 墙) SSR访问Google 因为GFW的限制导致国内无法直接访问谷歌,那么SSR为什么能绕过限 ...