首先你要理解什么是分片,也有的书叫切片(slice)。当你需要一个序列的子串的时候,你就可以使用切片操作a = ['a','b','c','d','e','f','g']

在a这个序列中,如果你想截取里面['c','d','e']这个子序列,那么你就可以使用切片a[2:5]

它的语法形式是a[start:end],这里有一个区间边沿取值的问题。首先你要明确序列的索引是从0开始的,a[2:5]取值的范围是[2,5),前面是闭区间,后面是开区间,也就是2<=索引值<5这段区间里的元素。所以如果这样来切的话:a[1:1],得到的就是[],空序列。试问在序列a中,哪里有元素的索引是既>=1又<1的呢?

上面切片出来出来(a[2:5])的值是['c','d','e']。但是它返回的并不是一个值,而是一个引用,换句话说,a[2:5]之后所得到的子序列,如果你对它进行修改

那么它的修改就会反馈到原来的序列当中,你可以尝试一下:a[2:5] = ['x','y','z']

print a

a = ['a','b','x','y','z','f','g']

你对切片进行赋值已经反映到源序列当中。但是,如果我不赋值三个元素,我赋值两个,或者四个,那会发生什么情况呢?

看看下面的代码:>>> a = ['a','b','c','d','e','f','g']

>>> a[2:5] = ['1','2']

>>> print a

['a', 'b', '1', '2', 'f', 'g']

>>> a = ['a','b','c','d','e','f','g']

>>> a[2:5] = ['1','2','3','4']

>>> print a

['a', 'b', '1', '2', '3', '4', 'f', 'g']

答案显而易见,就算你赋值元素个数和原来切片出来元素的个数不一样,它所反映到源序列的都是['c','d','e']这个子序列被改变。

也就是:a[2:5] = ['1','2']之后得到的不是想当然的['a', 'b', '1', '2', 'e','f', 'g']而是,['a','b','1','2','f','g']

如果你把一个空序列赋值给切片对象a[2:5] = [],那么反映到序列中的就是2<=索引<5的元素被删除了。和上面一样,再来看看代码,算是作为结束:>>> a = ['a','b','c','d','e','f','g']

>>> a[2:5] = []

>>> print a

>>> ['a','b','f','g']

>>> print len(a)

4

>>> a = ['a','b','c','d','e','f','g']

>>> print len(a)

7

>>> a[2:5] = ['1','2','3','4','5','6','7']

>>> print a

['a', 'b', '1', '2', '3', '4', '5', '6', '7', 'f', 'g']

>>> print len(a)

11

我还想说说几种切片的方法,因为它们实在太有趣了。

上面我们用到的索引一直都是正值,但是在python中,序列的索引值可以是负值。从最后一个元素索引开始计算,分别是-1,-2,-3,.....

我想换个字符串来测试,不要再abcd,1234的了。就用segmentfault.com吧!>>> a = list('segmentfault.com')

>>> print a

['s', 'e', 'g', 'm', 'e', 'n', 't', 'f', 'a', 'u', 'l', 't', '.', 'c', 'o', 'm'] #最后一个'm'的索引是-1,然后依次向前递减

>>> print a[-16:-4]

['s', 'e', 'g', 'm', 'e', 'n', 't', 'f', 'a', 'u', 'l', 't']

要注意区间的选取。-16<=索引值

除此之外,我还可以在'segmentfault'中每隔两个字符地将截取到的字符组成序列。试试:>>>print a[-16:-4:3]

>>>['s', 'm', 't', 'u'] #隔了两个字符

在这里的3被称作步进值,步进切片的语法形式就是:seq[start:end:step],在start<=索引值= 1)。

而且,这个步进值同样可以是负数,对应的形式就是seq[end:start:step],在start<=索引值

所以a[-4:-16:-3]的意思就是:反方向从-16<=索引值

所以当你想要把这个序列反转的时候,你就可以从反方向截取所有元素a[::-1]。

通过这几种方法切片出来的对象,你都可以进行赋值,具体的你就自己尝试一下吧!

其实还有一种切片方式,叫缩略切片,因为我对它不是很了解,所以不打算写了。如果你有兴趣可以google一下。

总结一下:当step为正值的时候,seq[start:end:step]表示的是在seq中,每隔step-1个字符,截取start<=索引值

当step为负值的时候,seq[end:start:step]表示的是在seq中,每隔|step|-1个字符,截取start<=索引值

注意是从哪边开始!

这样看还是挺混乱的,关键还是多练!

Ps:时间很紧,下午还要考试,可能会有错误。所以还是以官方文档和书本的为准吧。我的python版本是2.7.3。

python分片赋值_关于 python 分片赋值相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合

    本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...

  4. python deepcopy函数_用Python解数独[6]:递归获得最终答案

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  5. python数据结构教程_利用Python演示数型数据结构的教程

    使用 Python 内建的defaultdict方法可以轻松定义一个树的数据结构. 简单的说树也可以是一个字典数据结构 def tree(): return defaultdict(tree) 这就是 ...

  6. python炒股日记_自学python的日记分享

    2019.4.22登记 课堂笔记 2019.4.8 在windows环境下,用python写出第一个程序"hello world" 1 print("Hello Worl ...

  7. python换发型_初学Python的一些细节

    一.python的数据类型 1.python的基本数据类型包括数值数据类型和字符串数据类型:基本数据类型的特点是不允许改变,如果改变基本数据类型的值,会导致内存的重新分配. int 整形 二进制 a ...

  8. 儿童学python第一课_初学Python(第一课)

    今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ...

  9. python笔记手册_《Python 学习手册》读书笔记

    Python 脚本首行 P72 #! /usr/local/bin/python or #! /usr/bin/env python Windows 上输入的技巧 P77 input() 函数防止双击 ...

  10. python核心底层_大话Python函数底层逻辑 - 北门吹雪 - 开发者的网上家园

    函数 叫 子过程或子程序 描叙的更为贴近实际应用场景 这和数学中的函数实现上不同但语义上相识,如 f(x) = expressiom, 给定一个确定的输入必然返回一个确定的输出 数学中函数的关系是通过 ...

最新文章

  1. VGG - Very Deep Convolutional Networks for Large-Scale Image Recognition
  2. call/apply/bind 的理解与实例分享
  3. python调用有道词典_菜鸟上手Python最有野心的库Asyncio
  4. Java学习_int和Integer的区别+包装类
  5. 钱币掉落动画android,mpvue实现小程序签到金币掉落动画(api实现)
  6. python对图像二值化_python如何二值化图像
  7. activiti 工作流_activiti-boot快速开发工作流框架
  8. 为vim编辑器设置行号
  9. JavaScript页面跳转
  10. Keil5软件安装教程
  11. ubuntu个人常见问题汇总
  12. OpenCV——图像窗口namedWindow
  13. 失落世界服务器国庆宝箱位置,失落的斯菲尔 图文攻略 全剧情任务流程全宝箱收集...
  14. 大唐芙蓉园-莫安迪摄影作品
  15. 大整数的加减乘除运算
  16. AT24C02驱动程序,【I2C串行总线】的组成及工作原理
  17. Pytorch:一些常用代码
  18. 小米VR nolo 安装调试简介
  19. 【漫漫转码路】Python Day 16
  20. 客户化软件时代的前夜 ZT

热门文章

  1. 【光学】基于matlab GUI模拟波动光光学系统【含Matlab源码 1064期】
  2. 【模拟信号】基于matlab抑制载波双边带调幅信号产生+解调【含Matlab源码 985期】
  3. 【人脸表情识别】基于matlab LBP+LPQ算法融合人脸表情识别【含Matlab源码 432期】
  4. 【优化求解】基于matalb改进的遗传算法GA求解城市交通信号优化问题【含Matlab源码 214期】
  5. 【用电量预测】基于matlab SVM用电量预测【含Matlab源码 103期】
  6. php和java的语法区别吗_php语法同java语法的基本区别(实例项目需求,php才能熟)...
  7. c截取字符串中的一部分_2019年!史上最全Python基础题(50道题详解)持续更新中-第二篇...
  8. ai人工智能_AI如何帮助截肢者?
  9. linux清除占用端口,Linux中解除端口占用的方法
  10. java对象的序列化和反序列化_Java对对象的序列化和反序列化详解