2015/8/30 Python基础(4):序列操作符
序列是指成员有序排列,可以通过下标偏移量访问的类型。Python序列包括:字符串、列表和元组。
序列的每个元素可以指定一个偏移量得到,多个元素是通过切片操作得到的。下标偏移量从0开始计数到总数-1结束。
序列类型操作符
这些操作符是对所有序列类型都适用的。
| 序列操作符 | 作用 |
| seq[ind] | 获得下标为ind的元素 |
| seq[ind1:ind2] | 获得下标从ind1到ind2的元素集合 |
| seq * expr | 序列重复expr次 |
| seq1 + seq2 | 连接序列seq1和seq2 |
| obj in seq | 判断obj元素是否在seq中 |
| obj not in seq | 判断obj元素是否不再seq中 |
seq[ind]有下面这段代码
>>> lst = [1,2,3,4,5,6]
>>> exp = "abcdef"
>>> tub = ("apple","orange","banana","watermelon")
>>> print lst[2] #打印列表中下标为2的元素
3
>>> print exp[0] #三种序列的使用方式一致
a
>>> print tub[3]
watermelon
>>> print lst[-1]#负索引,以结束为起点
6
>>> print lst[6]#索引不能超出序列长度 Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
print lst[6]#索引不能超出序列长度
IndexError: list index out of range
>>> print [1,2,3,4,5,6][0] #可以不将序列赋值直接使用
1
>>> print 'abcde'[0] #可以不将序列赋值直接使用
a
上面涵盖了seq[ind]的几种使用方案。正索引的偏移数是 0 到(总元素数量-1),从首元素开始索引;负索引的偏移数是 -1 到 负的总元素数量,从尾元素开始索引。
但是这种索引方式只能索引一个元素,多个元素索引使用
sequence[start_index:end_index(:step)]
有如下代码
>>> lst = [1, 2, 3, 4, 5, 6]
>>> print lst[:] #省略两个坐标则从开始到结束
[1, 2, 3, 4, 5, 6]
>>> print lst[3:] #省略结束坐标
[4, 5, 6]
>>> print lst[:5] #省略开始坐标
[1, 2, 3, 4, 5]
>>> print lst[::2] #步长为2,隔一个取一个
[1, 3, 5]
>>> print lst[::-1] #反向序列
[6, 5, 4, 3, 2, 1]
>>> print lst[1:5:2] #从坐标1到坐标5之间,隔一个取一个
[2, 4]
>>> print lst[-5:-3]
[2, 3]
>>> print lst[-1:100]
[6]
>>> print lst[-6:-4] #负索引,并不负输出
[1, 2]
>>> print lst[-3:5] #正负索引同时存在时,坐标只代表位置,截取位置间的元素
[4, 5]
>>> print lst[:100] #索引可以超出序列长度
[1, 2, 3, 4, 5, 6]
>>> print lst[-5:100] #索引可以超出序列长度
[2, 3, 4, 5, 6]
关于切片运算,还有一个值得说的事,如果使用负索引:
>>> lst = [1,2,3,4,5,6,7]
>>> print lst[:-2]
[1, 2, 3, 4, 5]
>>> print lst[:-1]
[1, 2, 3, 4, 5, 6]
>>> print lst[:0]
[]
当负索引是尾坐标时,我们永远无法截到最后一个元素,因为-1是负索引最大的值,如果使用0则会认为是正索引。
这种情况下,我们可以使用None来代替0的位置
>>> print lst[:None]
[1, 2, 3, 4, 5, 6, 7]
连接操作符 +
连接操作符允许把多个序列连在一起,但只能连接同样的对象。都是列表,都是字符串或都是元组
>>> num_lst = [1,2,3,4]
>>> mixup_lst = [567,'abc',[123,'aaa']]
>>> num_lst + mixup_lst
[1, 2, 3, 4, 567, 'abc', [123, 'aaa']]
>>> string = 'abcdef'
>>> num_lst + string Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
num_lst + string
TypeError: can only concatenate list (not "str") to list
重复操作符(*)
>>> mixup_lst = [567,'abc',[123,'aaa']]
>>> string = 'abcdef'
>>> mixup_lst * 2
[567, 'abc', [123, 'aaa'], 567, 'abc', [123, 'aaa']]
>>> string * 3
'abcdefabcdefabcdef'
>>> mixup_lst * mixup_lst Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
mixup_lst * mixup_lst
TypeError: can't multiply sequence by non-int of type 'list'
* 后只能接数字,代表重复次数,否则都会错误
成员关系操作 in , not in
>>> mixup_list = ['a',123,['x',1.4,35]]
>>> 'a' in mixup_list
True
>>> 'x' in mixup_list
False
>>> 'x' in mixup_list[2]
True
>>> string = 'abcdef'
>>> 'a' in string
True
>>> 'bcd' in string
True
>>> 'abd' in string
False
以上是in的几种操作,用于判别元素是否属于这个序列。如果使用not in 则结果相反。
2015/8/30 Python基础(4):序列操作符的更多相关文章
- Python基础:序列(字符串)
一.概述 字符串 类似于C中的字符数组(功能上更像C++中的string),它是由一个个 字符 组成的序列.与C/C++不同的是,Python中没有 字符 这个类型,而是用 长度为1的字符串 来表示字 ...
- Python基础:序列(列表、元组)
一.概述 列表(list)是由一个个 Python对象 组成的序列.其中,Python对象 可以是任何类型的对象,包括 Python标准类型(数值.字符串.列表.元组和字典)以及 用户自定义类型(类) ...
- python基础之序列类型的方法——字符串方法
python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部 ...
- 2015/8/31 Python基础(5):字符串
字符串是Python最常见的一种类型.通过在引号间包含字符的方式创建它.Python里单双引号的作用是一致的.Python的对象类型里不存在字符型,一般用单个字符的字符串来使用.Python的字符串是 ...
- 2015/9/29 Python基础(20):类的授权
类的授权 1.包装包装在Python编程世界中时经常会被提到的一个术语.它是一个通用的名字,意思是对一个已存在的对象进行包装,不管它是数据类型,还是一段代码,可以是对一个已存在的对象,增加新的,删除不 ...
- 2015/9/28 Python基础(19):类的定制和私有性
用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...
- 2015/9/20 Python基础(16):类和实例
面向对象编程编程的发展已经从简单控制流中按步的指令序列进入到更有组织的方式中,依靠代码块可以形成命名子程序和完成既定的功能.结构化的或过程性编程可以让我们把程序组织成逻辑快,以便重复或重用.创造程序的 ...
- 2015/9/17 Python基础(13):函数
函数是对程序逻辑进行结构化或过程化的一种编程方法. Python的函数返回值当什么也不返回时,返回了None和大多数语言一样,Python返回一个值或对象.只是在返回容器对象时,看起来像返回多个对象. ...
- 2015/9/10 Python基础(11):错误和异常
程序在执行的过程中会产生异常,出现错误在以前的一个时期是致命的,后来随着程序的发展,使得一些错误的处理方式是柔和的,发生错误会产生一些错误的诊断信息和一些模糊的提示.帮助我们来处理异常.今天将学习Py ...
随机推荐
- 《剑指Offer》题三十一~题四十
三十一.栈的压入.弹出序列 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的数字均不相等.例如,序列{1, 2, 3, 4 ,5}是某栈的压栈序列 ...
- StrBlob类——智能指针作为成员
/* 管理string的类 使用vector来管理元素 由于类对象被销毁时相应的元素成员也将销毁 所以需要将vector保存在动态内存中 */ //该程序鲁棒性不强,没有考虑到vector为空的情况 ...
- 每周psp-第五周
PSP表格: 类别 任务 开始时间 结束时间 中断时间 delta时间 开会 scrum立会 10.13下午6:04 10.13下午6:34 0 30 开会 scrum立会 10.14下午6:02 1 ...
- 团队作业7——第二次项目冲刺-Beta版本项目计划
上一个阶段的总结: 在Alpha阶段,我们小组已近完成了大部分的功能要求,小组的每一个成员都发挥了自己的用处.经过了这么久的磨合,小组的成员之间越来越默契,相信在接下来的合作中,我们的开发速度会越来越 ...
- 《剑指offer》---顺时针打印矩阵
本文算法使用python3实现 1. 问题1 1.1 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 ...
- iOS开发解决 jsonModel 属性跟系统的重复
-(id)initWithDic:(NSDictionary *)dic { if (self = [super init]) { [self setValuesForKeysWithDictiona ...
- 3dContactPointAnnotationTool开发日志(十二)
因为ReferenceImage的锚点是固定的左下角,缩放时controller面板也会跟着动.为了使Scale的时候controller上的slider不会远离指针,于是把controller固 ...
- 3ds Max学习日记(九)
添加了几根线条,又跟着教程细扣了一下面部细节,并把鼻子做的更细致了一些,如图: 又做了好久,按着教程抠出了眼睛和嘴,感觉自己做的模型就跟鬼似的... 做了下头发,看了下视频最后,并没教如何 ...
- 利用Vue v-model实现一个自定义的表单组件
原文请点此链接 http://blog.csdn.net/yangbingbinga/article/details/61915038
- mysql8基本配置,差点被各种坑蒙圈
1. 下载免安装版mysql地址 https://dev.mysql.com/downloads/mysql/ 2. 基本配置 (1)解压zip包,将bin目录添加到环境变量 (2)在mysql根目录 ...