Lesson 2-1 (数据结构,序列通用的操作)

Posted jlufcs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lesson 2-1 (数据结构,序列通用的操作)相关的知识,希望对你有一定的参考价值。

2.0 数据结构

--- 数据结构是以某种方式组合起来的数据元素集合。

--- python的常见的数据结构

技术图片

 

2.1 序列(sequence)

--- 序列中的每个元素都有编号,即索引(也称为下标)。

--- 第一个位置索引为0,第二为1,依次类推。也可用负索引,末尾位置为-1,倒数第二为-2,依次类推。

--- 元组是一种特殊的序列,类似于列表,但是不能修改。

                                

2.2 通用的序列操作

2.2.1 索引(indexing)

--- 可通过索引来获取序列中该位置的元素,索引只能是整数,不能是浮点数。

--- 序列从左往右,索引由0开始递增;序列从右往左,索引由-1开始递减。

 1 >>> seq = "Hello world!"
 2 >>> seq[0]
 3 H
 4 >>> seq[7]
 5 o
 6 >>> seq[-1]
 7 !
 8 >>> seq[-3]
 9 l
10 >>> 

--- 多重序列中的索引表示法

1 >>> seq = [["H", "e", "l", "l", "o"], ["w", "o", "r", "l", "d"]]
2 >>> seq[0]
3 [H, e, l, l, o]
4 >>> seq[0][1]
5 e
6 >>> seq[-1][-3]
7 r
8 >>> 

 

2.2.2 切片(slicing)

--- 使用索引可以访问序列中的单个元素,使用切片可以访问序列中特定范围内的元素。

--- 切片表示法:[ A : B : C ]   ,其中,A表示切片开始处的索引(包括),B表示切片结束处的索引(不包括),C表示切片的步长(可省略,默认为1,不能为0,但可以为负数)。

--- 即A和B是两个索引,用来指定切片的边界,并遵循左闭右开原则。

 1 >>> seq = "Hello world!"
 2 >>> seq[1:7]
 3 ello w
 4 >>> seq[1:7:2]
 5 el 
 6 >>> seq[-3:-1]
 7 ld
 8 >>> seq[-10:-1:3]
 9 l r
10 >>> 

--- 当步长为默认或正数时,A索引必须比B索引位于序列的左边,否则访问到的是空序列。步长为负数时,则正好相反。

>>> seq = "Hello world!"
>>> seq[7:2]
‘‘
>>> seq[-1:-5]
‘‘
>>> 

--- 省略表示法。如果从序列最左边开始,则A索引可省略;如果到序列最末尾结束,则B索引可省略;如果A、B索引都省略,则表示访问整个序列。

1 >>> seq = "Hello world!"
2 >>> seq[ :7]
3 Hello w
4 >>> seq[-7: ]
5  world!
6 >>> seq[ : ]
7 Hello world!
8 >>> 

--- 步长为负数时,表示从序列的右边开始往左访问序列中的元素。A、B索引为空,步长为-1,则表示颠倒顺序访问序列中的元素。

 1 >>> seq = "Hello world!"
 2 >>> seq[7:1:-1]
 3 ow oll
 4 >>> seq[7:1:-2]
 5 o l
 6 >>> seq[-2:-8:-1]
 7 dlrow 
 8 >>> seq[-2:-8:-2]
 9 drw
10 >>> seq[ : :-1]
11 !dlrow olleH
12 >>> 

 

2.2.3 序列相加

--- 可使用加法运算符拼接序列

--- 不能拼接不同类型的序列

 1 >>> seq_1 = "Hello "
 2 >>> seq_2 = "world!"
 3 >>> seq = seq_1 + seq_2
 4 >>> seq
 5 Hello world!
 6 >>> seq_1 = "Hello "
 7 >>> seq_2 = [1, 2, 3]
 8 >>> seq = seq_1 + seq_2
 9 Traceback (most recent call last):
10   File "<stdin>", line 1, in <module>
11 TypeError: must be str, not list
12 >>> 

 

2.2.4 序列乘法(复制)

--- 序列与整数n相乘时,将复制这个序列n次来得到一个新序列,从而实现序列的复制。

1 >>> seq = "Hello " * 5
2 >>> seq
3 Hello Hello Hello Hello Hello 
4 >>> 

 

2.2.5 成员资格

--- 检查特定值是否包含在序列中,使用 in 和 not in 运算符。检查结果返回布尔值True和False。

1 >>> seq = "Hello world!"
2 >>> "e" in seq
3 True
4 >>> "h" in seq
5 False
6 >>> "h" not in seq
7 True
8 >>> 

 

2.2.6 序列长度、最小值和最大值

--- 可通过内置函数len、min和max得出序列相对应的长度、最小值和最大值。最小、最大值比较依据元素在ASCII码表中的ASCII值。

 1 >>> seq = "Hello world!"
 2 >>> len(seq)
 3 12
 4 >>> min(seq)
 5  
 6 >>> max(seq)
 7 w
 8 >>> seq = [1, 2, 3, -4]
 9 >>> min(seq)
10 -4
11 >>> max(seq)
12 3
13 >>> 

 

以上是关于Lesson 2-1 (数据结构,序列通用的操作)的主要内容,如果未能解决你的问题,请参考以下文章

统计软件与数据分析—Lesson2

Python--数据结构-序列-通用操作

Python通用序列操作

序列的通用操作

基础知识回顾——通用序列操作

Python通用序列操作