python3.5修炼手册6

通用序列操作

python中所有的序列都可以进行一些特定的操作。包括索引(indexing)、分片(slicing)、序列相加(adding)、乘法(multiplying)、成员资格、长度、最小值和最大值。

索引

序列是python中最基本的数据结构。序列中的每个元素都分配一个数字,代表他在序列中的位置(索引),第一个索引是0,第二个是1,以此类推。

序列中所有元素都是有编号的,从0开始递增。可以通过编号分别对序列的元素进行访问。

例如:

>>> greeting = ‘Hello‘
>>> greeting[0]
‘H‘
>>> greeting[1]
‘e‘
>>> greeting[2]
‘l‘

序列中的元素是从0开始,从左到右依自然顺序编号,元素可以通过编号访问。

获取元素的方式:在变量后面加中括号,在括号中输入所取元素的值。

注意;字符串是有字符组成的序列。所以0指向的第一个元素。例如上面例子,0指向了H,以此类推。

从右往左反方向通过编号获取元素。

例如:

>>> greeting = ‘Hello‘
>>> greeting[-1]
‘o‘
>>> greeting[-2]
‘l‘
>>> greeting[-3]
‘l‘
>>> greeting[-4]
‘e‘

最右边的元素值为-1,从右向左递减  千万注意没有-0。

在Pyhon中从左向右索引称为正数索引,从右向左称为负数索引。

进行字符串的索引时,不定义变量也是可以的。

例如:

>>> ‘Hello‘[0]
‘H‘
>>> ‘Hello‘[1]
‘e‘
>>> ‘Hello‘[-1]
‘o‘

直接使用索引的效果和定义变量的效果是一样的。

使用函数返回一个序列,使用交互模式

>>> thirdth=input()[0]
happy
>>> thirdth
‘h‘

由输出结果可以看到,对函数的返回结果进行了索引操作。

索引既可以对变量的引用操作,也可以直接操作序列,还可以操作函数的返回序列。

分片

分片可以对一定范围内的元素进行访问,分片通过冒号相隔的两个索引实现。

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> #取索引为第一个和第二个的元素
... number[1:3]
[2, 3]
>>> #取倒数第三个和倒数第二个的元素
... number[-3:-1]
[8, 9]

由操作结果可以看出,分片操作既支持正数索引,也可以支持负数索引。

分片操作的实现需要提供两索引作为边界,第一个索引的元素包涵在分片内,第二索引的元素不包涵在分片内。

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> #取最后三个元素
... number[7:10]
[8, 9, 10]

number的编号最大为9,编号10指向的是第11元素,是一个不存在的元素,但是在最后一个元素之后,,因此能得到最后一个元素

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[7:11]
[8, 9, 10]
>>> number[7:12]
[8, 9, 10]

小实验:想想下面为什么输出结果为空呢

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[-3:0]
[]

解答:只要分片中最左边的索引比右边的索引晚出现在序列中,结果就是一个空序列

比如小实验中-3代表倒数第3元素,0代表第一个元素倒数第3个元素比第一个元素晚出现,即排到第一个元素后面,所以取得的结果是空序列。

如果需要从列表的结尾开始,取到最后一个值该怎么办

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[-3:]
[8, 9, 10]

需要取得分片包括序列结尾的元素,只需要将第二个索引设置为空如上

如果使用正数索引能不能达到上例效果

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> #从第一元素开始输出,输出全部结果
... number[0:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> #最后一个元素为第一个,输出为空
>>> number[:0]
[]
>>> #取得前3个元素
>>> number[:3]
[1, 2, 3]
如果输出整个列,则将两个索引都设为空
例如:
>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

步长

python还提供了另外一个参数步长(step length)该参数通常是隐式设计,在普通分片中,步长是1。分片操作就是按照这个步长逐个遍历序列的元素,遍历后返回开始和结束点之间的所有元素,也可以理解为默认步长为1,即使没有设置步长时,步长隐式设置值为1;

例如:

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

将步长设置为比1大的数

>>> number[0:10:2]
[1, 3, 5, 7, 9]

由上例可以看出步长设置为2可以得到奇数序列。

步长设置为大于1的时,会得到一个跳过某些元素的序列

灵活使用步长

例如:

>>> number[0:10:3]
[1, 4, 7, 10]
>>> number[2:6:3]
[3, 6]
>>> number[2:5:3]
[3]
>>> number[1:5:3]
[2, 5]

也可以设置前面两个索引为空的捷径

例如:

>>> number[::3]
[1, 4, 7, 10]

千万注意:步长不能为0

步长也是可以为负数的

例如:

>>> number[10:0:-2]
[10, 8, 6, 4, 2]
>>> number[0:10:-2]
[]
>>> number[::-2]
[10, 8, 6, 4, 2]
>>> number[5::-2]
[6, 4, 2]
>>> number[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> #第二个索引为0,取不到序列中的第1个元素
... number[10:0:-1]
>>> #设置第二个索引为空,可以取到序列的第一个元素
... number[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> #设置第二个索引为空,可以取到序列的第一个元素
... number[2::-1]
[3, 2, 1]
>>> #第二个索引为0,取不到序列中的第1个元素
... number[2:0:-1]
[3, 2]

注意:使用负数步长时,设置第二个索引为空才能取到序列的第一个元素。

由上例可以看出负数步长和正数步长的结果相反。

步长小总结:对于正数步长,python会从序列的头部开始向右提取,直到最后一个元素。

对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。

正数步长必须让开始点小于结束点。

负数步长必须让开始点大于结束点。

序列相加

使用+号可以进行序列的连接操作

例如:

>>> [1,2,3] + [3,4,5]
[1, 2, 3, 3, 4, 5]
>>> print(a+b)
[1, 2, 8, 9]
>>> c=‘du‘
>>> d=‘yu‘
>>> e=‘heng‘
>>> print(c+d+e)
duyuheng

千万注意;只有类型相同的序列才能通过+号进行序列连接操作,不同类型的序列不能通过+号进行序列连接操作。

乘法

用一个数字n乘以一个序列会生成行的序列。在新额序列中,原来的序列将重复n次

例如:

>>> ‘duyuheng‘*5
‘duyuhengduyuhengduyuhengduyuhengduyuheng‘
>>> [5]*5
[5, 5, 5, 5, 5]

从上例可以看,序列被重复了对应的次数,而不是乘法运算

初始化一个长度为x的序列,就需让每个编码的位置上都是空值,此时需要一个值代表空值,即里面没有任何元素

例如:

>>> #初始化5个为空的序列
... sq=[None]*5
>>> print(sq)
[None, None, None, None, None]

None代表python的内建值,代表什么都没有

乘法小总结:python中的序列乘法可以快速做一些初始化操作。

成员资格

in运算符用于检验某个条件是否为真,并返回检验结果,检验结果为真返回True,结果为假返回False。

例如:

>>> name=‘duyuheng‘
>>> #检测字符串h是否早字符串中
... ‘h‘ in name
True
>>> #检测s是否在字符串内
... ‘s‘ in  name
False
>>> user=[‘duyuheng‘,‘duzhaoli‘,‘changting‘]
>>> #检测字符串是否在字符串列表中
... ‘changting‘ in user
True
>>> ‘xuwei‘ in user
False
>>> numbers=[1,2,3,4,5]
>>> #检测数字是否在数字列表中
... 1 in numbers
True
>>> 7 in numbers
False
>>> eng=‘& wo ai ni * mei li de gu niang‘
>>> #检测特殊符号是否在字符串中
>>> ‘*‘ in eng
True
>>> ‘$‘ in eng
False
>>> ‘a‘ in numbers
False
>>> 3 in name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ‘in <string>‘ requires string as left operand, not int
>>> type(name)
<class ‘str‘>

成员资格小总结:用in可以很好的检测字符或数字是否在对应的列表中。

但是从上例看出数字类型不能在字符串类型中通过in进行成员资格检测,

而字符串类型可以在数字类型中通过用in进行成员资格检测

长度、最小值和最大值

python提供了长度、最小值和最大值的内建函数,对应的内建函数分别是len、min和max.

使用方法

例如:

>>> numbenrs=[300,200,100,800,500]
>>> len(numbenrs)
5
>>> max(numbenrs)
800
>>> min(numbenrs)
100

也可以这样使用

>>> max(5,3,10,7)
10
>>> min(5,3,10,-7)
-7

长度、最小值和最大值小总结:

len函数返回序列中所包涵元素的数量。

max函数和min函数分别返回序列中的最大值和最小值。

max和min虚函数的参数不是一个序列,而是以多个数字直接作为参数,直接求多个数字的最大值和最小值。


时间: 2024-08-25 14:53:46

python3.5修炼手册6的相关文章

python3.5修炼手册10

字典 字典的使用 在python中对字典进行了构造,让我们可以轻松的查到某个特定的键(类似拼音或笔画索引),从而通过键找到对应的值(类似具体某个字). 创建和使用字典 字典的创建格式如下 a={key1:value1,key2:value2} 空字典的创建 b={} 注意:在创建字典的的时候键(key)必须唯一的,但值(value)不必.值可以取任何数据类型,键必须是不可变的,如字符串.数字或元组. dict函数 dict函数 可以通过其他映射(如其他字典)或键/值序列对建立字典. 例如: st

python3.5修炼手册12

函数 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码. 定义函数 python支持自定义函数,即由我们自己定义一个实现某个功能的函数. 自定义函数规则: ①函数代码块以def关键字开头,后接函数标识符名称和圆括号"()". ②所有传入的参数和自定义变量都必须放在圆括号中,可以在圆括号中定义参数. ③函数的第一行语句可以选择性的使用文档字符串,用于存放函数说明. ④函数内容以冒号开始,并且要缩进. ⑤return[表达式]结束函数,选择性的返回一个值给调用方.不带表达式的r

python3.5修炼手册1

开启python之旅 print('hello,qorld')  print是一个函数,需要把打印的内容用''或""括起来但是不能混用 *SyntaxError: invalid character in identifier   语法错误,当扫描字符串时发生错误 认识程序 高级语言翻译成机器代码有两种方法即解释和编译 解释型语言是边读源程序边执行.高级语言就是源代码,解释器每次会读入一段源代码,并执行它,接着在读入并执行,如此重复并,直至结束 编译型语言是将源代码完整的编译成目标代码

python3.5修炼手册7

元组 元组与列表的不同之处在于元组的列表不能修改. 创建元组的方法比较简单使用,分开一些值,就会创建元组. 例如: a=1,2,3 print(a) C:\python\python.exe C:/python.py/yuanzu.py (1, 2, 3) 最常用的方法就是使用()将值括起来 例如: b=('hello','world') print(b) C:\python\python.exe C:/python.py/yuanzu.py ('hello', 'world') 创建空元组(就

Python3.5修炼手册2

变量和关键字 变量指向各种类型的名字,以后用再用到这个值时,直接引用名字即可,不用在写具体的值. 可以把一个整数值赋给变量,如果觉得不合适,把字符串赋给变量也可以. 在Pyhon中 等号(=)是赋值语句,可以把任意数值类型赋值给变量. *字符串必须以引号标记开始,并以引号标记结束. 同一个变量可以反复赋值,而且可以是不同类型的变量 例如: a=123 a='ABC' print(a) 输出内容为:ABC 变量类型不固定的语言称为动态语言,与之相对应的是静态语言.静态语言在的定义变量是必须指定变量

Python3.5修炼手册13

面向对象编程 python是一门面向对象编程语言,对面向对象语言编程的过程叫做面向对象. 面向对象程序设计把计算机程序视为一组对象的集合,每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序执行的就是一系列消息在各个对象之间传递. 在python中,所有数据类型都被视为对象,也可以自定义对象.自定义对象数据类型就是面对对象中的类(Class)的概念. 面向对象术语简介: 类: 用来描述具有相同属性和方法的对象集合.类定义了集合中每个对象共有的属性和方法.对象式类的实例. 类变量(属

python3.5修炼手册11

条件.循环和其他语句 import的使用 import的标准语法是: import module1[,module2[,...moduleN]] 表示允许一个import导入多个模块,但是各个模块需要用逗号隔开. 当解释器遇到import语句时,如果模块在当前搜索路径就会被导入.搜索路径是一个解释器,会先搜索所有目录的列表. python搜索路径由一系列目录名组成,python解释器会依次从这些目录中寻找引入模块. 搜索路径是在python编译或安装时确定的,被存储在sys模块的path的变量中

python3.5修炼手册9

字符串 可以使用使用(''或"")创建字符串. 创建字符串很简单,只要为变量分配一个值即可. 例如: field='Hello' 注意:字符串是不可变的,所以字符串做不到分片赋值 可以在输出语句中输出两行 print('天王盖地虎\n小鸡炖蘑菇') C:\python\python.exe C:/python.py/yuanzu.py 天王盖地虎 小鸡炖蘑菇 python中的转义字符 转义字符          描述 \(在行尾时)       持续行 \\              

python3.5修炼手册5

字符串操作 字符串是python中最常用的数据类型.我们可以使用''或""创建字符串. 通常字符不能进行数学操作,即使看起来像数字也不行.字符串不能进行除法.减法和字符串之间的乘法运算 字符串可以使用操作符+,但功能和数学的不一样,它会进行拼接(concatenation)操作,将后面两个字符首尾连接起来 例如: >>> string1='hello' >>> string2='world' >>> print(string1+st