首先你要理解什么是分片,也有的书叫切片(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<=索引值<-4

除此之外,我还可以在'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<=索引值<-4的元素中,隔两个元素来截取。

所以当你想要把这个序列反转的时候,你就可以从反方向截取所有元素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基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  2. python给矩阵赋值_解决Python二维数组赋值问题

    解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...

  3. arcmap中添加python脚本_基于Python脚本的ArcMap字段计算器分类赋值

    因为出差等等缘由,又没能很好的坚持记录博客,今天回来了,继续记录所学吧.python ArcMap中提供了"字段计算器工具",实际上就是对Sql语句进行了可视化封装,造成了一个具备 ...

  4. python数组赋值_对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解

    对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解 列表赋值: >>> a = [1, 2, 3] >>> b = a >>> print ...

  5. 类的继承python事例_【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸...

    作者:白宁超 2016年10月10日22:36:57 摘要:继一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc入门资料包含了基本要点.本文是对文档常用核心要点进行梳理,简 ...

  6. python计算机_基础python计算机知识

    1.计算机基础知识 计算机基础 :组成---输入输出设备 储存器 CPU 内存 cpu 中央处理器 :处理各种数据的 内存 存储数据 硬盘 存储数据的 什么是操作系统:控制计算机的工作流程 软件 什么 ...

  7. python 南京大学_南京大学python课程系列笔记之python基础之第一周:走进python

    1.1 python简介: 历史,特点,应用 1.2 第一个python程序: 1.输出: print(字符串) print(变量) 2.输入: varibale = input("mess ...

  8. python 标准差_标准差python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方差是每个值与均值的差值的平方的平均值,标准差是方差的平方根(这是有用的,因为取 ...

  9. python范例_最佳Python代码范例

    python范例 Python is a general purpose programming language which is dynamically typed, interpreted, a ...

  10. python整形_【python公开课|关于Python的整型,你都知道多少呢】- 环球网校

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

最新文章

  1. 数据库 大数据访问及分区分块优化方案
  2. Java 分页之最简单的算法
  3. 安装关联vs2008的opencv
  4. python写完程序保存_Python学习笔记——文件处理
  5. maven项目project facets中是2.3调整为3.0的解决办法
  6. 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
  7. 腾讯V265编码器:给用户以完备的265体验
  8. vue小demo易错点总结
  9. 深度残差收缩网络:(三)网络结构
  10. android 返回键退出程序了吗?
  11. [渝粤教育] 广东-国家-开放大学 21秋期末考试市场调查与预测10243k2
  12. Uva - 111 - History Grading
  13. Markdown latex语法合集
  14. div css3 border-radius 之圆角 div圆角 图片圆角
  15. diamond简介和搭建
  16. 科研绘图自由之开放式绘图平台 (Figdraw)
  17. vue实现文字翻转效果
  18. 李宏毅2022《机器学习/深度学习》——学习笔记(1)
  19. 如何调教你的360让他没有广告及烦人的提示
  20. 【C++】什么是对象?什么是类?

热门文章

  1. LVS-三种负载均衡方式比较
  2. Transport level information does not match with SOAP Message namespace URI错误的理解
  3. Unity3d之HashSlash学习笔记(一)--角色属性类的构架
  4. Java乔晓松-oracle的条件查询和排序查询
  5. C#WINFORM控件之ComboBox
  6. ABAP:SmartForms 之二--设计
  7. mybatis-plus 自定义QueryWrapper(一)实现查询函数
  8. 单元测试框架TestableMock快速入门(一):快速Mock任意调用
  9. python编程从入门到实战1-3章
  10. 两个简洁的页面:404和Loading