Python中数据结构之序列操作(笔记十)

数据结构
是通过某种方式(如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或字符。

在Python中,最基本的数据结构是序列。
6种内建序列分别是:
列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。
序列操作包括:
索引、分片、序列相加、乘法、成员资格、长度、最小值和最大值。

索引序列中的每个元素都分配一个数字,代表它在序列中的位置(索引),
从左向右递增通过编号获取元素时:第一个索引是0,第二个索引是1;
从右向左递减通过编号获取元素时:第一个索引是-1,第二个索引是-2。

编号就是索引,可以通过索引获取元素。例如

greeting=‘Hello’#定义变量greeting,并赋值Hello
greeting[0] #根据编号取元素,使用格式为:在中括号中输入所取元素的编号值’H’
greeting[1]
‘e’

greeting[2]
‘l’

获取元素的方式是:在变量后加中括号,在中括号中输入所取元素的编号值。
进行字符串的索引时都定义了一个变量,其实不定义变量也可以。

‘Hello’[0]
‘H’

‘Hello’[1]
‘e’

‘Hello’[-1]
‘o’

‘Hello’[-2]
‘l’

函数返回一个序列,也可以对其进行索引。
例如:

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]

分片操作的实现需要提供两个索引作为边界,
第一个索引的元素包含在分片内,
第二个索引的元素不包含在分片内。
例如需要访问最后3个元素,使用正数索引可以这样操作:

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

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

若需要输出整个序列,则可以将两个索引都设置为空。
例如1:

number[0:] #从第一个元素开始输出,输出全部结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

number[:0] #最后一个元素为第一个,输出为空
[ ]

number[:3] #取得前3 个元素
[1, 2, 3]

例如2:

number[:] #取得整个数组
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

取不连续元素
步长(step length),该参数通常是隐式设置的。在普通分片中,步长是1。分片操作就是按照这个步长逐个遍历(是指对一个序列中的所有元素都执行动作,就叫做遍历。)序列的元素,遍历后返回开始和结束点之间的所有元素。
例如:

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

对于number序列,设置步长为2时,得到的结果是奇数序列。例如:

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

步长设置为大于1的数时,会得到一个跳过某些元素的序列。
设置前面两个索引为空的捷径也可以使用。
例如:

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

每3个元素的第一个提取出来,前面两个索引都设置为空。
步长不能为0。
对于正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。正数步长必须让开始点小于结束点,而负数步长必须让开始点大于结束点。

序列相加
数字序列与字符串序列可以分别得到新的数字序列和字符串序列。
而数字序列不能和字符串序列相加。
所以:
只有类型相同的序列才能通过加号进行序列连接操作,不同类型的序列不能通过加号进行序列连接操作。
乘法
用一个数字x乘以一个序列会生成新的序列。在新的序列中,原来的序列将被重复x次,这就是序列中的乘法。例如:

‘hello’*5’
‘hellohellohellohellohello’

[7]*10
[7, 7, 7, 7, 7, 7, 7, 7, 7, 7]

Python中的序列乘法可以帮助我们快速做一些初始化操作。
如:初始化一个长度为x的序列,就需要让每个编码位置上都是空值,即里面没有任何元素,可以使用None。None是Python的内建值,确切含义是“这里什么也没有”。

sq=[None]*5 #初始化sq 为含有5 个None 的序列
sq
[None, None, None, None, None]

成员资格in运算符用于检验某个条件是否为真,并返回检验结果,检验结果为真返回True,结果为假返回False。
这种运算符称作布尔运算符,返回的真值叫作布尔值。

☞bool 类型就是用于代表某个事情的真(对)或假(错),如果这个事情是正确的,用 True(或 1)代表;如果这个事情是错误的,用 False(或 0)代表。

例如:

greeting=‘hello,world’
‘w’ in greeting #检测w 是否在字符串中
True

‘a’ in greeting
False

users=[‘xiaomeng’,‘xiaozhi’,‘xiaoxiao’]
‘xiaomeng’ in users #检测字符串是否在字符串列表中
True

‘xiaohuai’ in users
False

numbers=[1,2,3,4,5]
1 in numbers #检测数字是否在数字列表中True
6 in numbers
False

eng=’** Study python is so happy!
'
’ in eng #检测一些特殊字符是否在字符串中True
‘$’ in eng
False

‘a’ in numbers
False

3 in greeting
Traceback (most recent call last): 
File “<pyshell#123>”, line 1, in
  
3 in greeting
TypeError: 'in ’ requires string as left operand, not int

综上所述,数字类型不能在字符串类型中通过in进行成员资格检测,而字符串类型可以在数字列表中通过in进行成员资格检测。长度、最大值和最小值对应的内建函数分别为len、max和min。
例如:

numbers=[300,200,100,800,500]
len(numbers)
5

max(numbers)
800

min(numbers)
100

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读