如何用python语言表示一个序列

Python018

如何用python语言表示一个序列,第1张

列表和字符串都是Python中的序列类型,它们有很多共同特性,如都可以进行“+”操作和“*”操作,都可以使用for循环迭代等。

为什么要使用序列呢?通过图中有序与无序的对比可能会得出答案,在很多情况下,有序的序列可能会更加方便操作。

序列是有序元素的集合。在计算机中,序列的一个典型示例就是在内存中保存数据,内存的地址是从小到大有序排列的,每一个地址存放一个数据,如图所示。

实际上,Python中的序列有一些操作是通用的,即可以用到每一种序列类型中。以下序列操作分别用列表和字符串举例。

1. min()函数和max()函数

min()函数和max()函数分别返回序列的最小项和最大项。

>>> numbers = [15, -2, 3, 42, 102]

>>> max(numbers)

102

>>> min(numbers)

-2

>>> max('Python')

'y'

>>> min('Python')

'P'

2. in和not in

使用in和not in操作符来判断某个子序列是否在该序列中:

>>> 1 in [1, 2, 3]

True

>>> 4 not in [1, 2, 3]

True

>>> 'p' in 'Python'  # Python区分大小写

False

>>> 'yth' in 'Python'  # 不仅仅可以判断单个字符

True

3. “+”和“*”

使用“+”操作符来拼接序列,使用“*”操作符来重复相加序列:

>>> 'Py' + 'thon'

'Python'

>>> 'I love you!' * 5

'I love you!I love you!I love you!I love you!I love you!'

列表的“+”操作与extend()方法类似,但是“+”操作不是就地操作,有返回值:

>>> list1 = [1, 2, 3]

>>> list2 = [4, 5, 6]

>>> list3 = list1 + list2

>>> list3

[1, 2, 3, 4, 5, 6]

>>> list4 = list1.extend(list2)

>>> list4  # list4是None

>>> list1  # list2追加到了list1上

[1, 2, 3, 4, 5, 6]

包含数字的列表和包含字符串的列表进行“*”操作:

>>> numbers_list = [1] * 3

>>> strings_list = ['Python'] * 3

>>> numbers_list

[1, 1, 1]

>>> strings_list

['Python', 'Python', 'Python']

>>> numbers_list[0] = 3

>>> strings_list[0] = 'C'

>>> numbers_list

[3, 1, 1]

>>> strings_list

['C', 'Python', 'Python']

4. 索引和切片

索引和切片都是通用的序列操作,因此,不仅列表有索引和切片,字符串也有索引和切片:

>>> word = 'Python'

>>> word[0]  # 第1个字符

'P'

>>> word[-2]  # 倒数第2个字符

'o'

>>> word[:2]  # 前2个字符

'Py'

>>> word[:2] + word[2:]  # 字符拼接

'Python'

>>> word[-3:]  # 后3个字符

'hon'

5. len()函数

len()函数用于获取序列的长度:

>>> words = """Python is a programming language that lets you work quickly and integrate systems more effectively."""

>>> len(words)

99

>>> lists_ = ['Python', 312, []]

>>> len(lists)

3

6. index()方法

序列中的index()方法用于查找第一个出现指定子序列的索引位置,如果不存在,那么会抛出ValueError异常:

>>> word = 'banana'

>>> word.index('a')

1

>>> word.index('na')

2

>>> word.index('an')

1

>>> word.index('c')

Traceback (most recent call last):

File "", line 1, in

ValueError: substring not found

index()方法也可以指定查找范围,即查找索引位置的起始值和结束值:

>>> numbers = [3, 1, 4, 1, 5]

>>> numbers.index(1)

1

>>> numbers.index(1, 2)

3

>>> word = 'banana'

>>> word.index('a', 2, 4)

3

7. count()方法

不仅仅是列表,每一种序列类型都有count()方法:

>>> word = 'banana'

>>> word.count('a')

3

>>> word.count('na')

2

>>> word.count('c')

0

>>> numbers = [1, 0, 1, 0, 1, 1]

>>> numbers.count(0)

2

>>> numbers.count(1)

4

序列 (sequence)是Python最基本的一种数据结构。

序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推。Python的序列索引支持负数,-1表示序列的最后一个元素,这是Python不同其他很多种语言不同的地方。

Python内置了多种序列,列表、元组、字符串是其中最常用的三种,本文为你描述各种序列的通用操作。

索引从0开始,索引号为0的元素为1,greeting的索引号为0的元素为'H'。

你可能注意到'Hello'和'H'都用单引号包围,这是Python不同于其他语言的另一个地方。Python并没有专门用于表示字符的数据类型,因此一个字符就是一个只包含一个元素的字符串。

Python的序列索引支持负数,-1表示倒数第一个元素。

切片 (slicing)操作用于访问序列特定 范围 内的元素。在一对方括号内使用两个索引,并用冒号隔开:

注意到,返回的序列并未包含愿序列的第6个元素7,就相当于数学集合中的 左闭右开区间 操作。

换言之,你提供两个索引来指定切片的边界,其中第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内。

保留冒号,省略第一个索引,表示从序列起始位置开始切片;省略第二个索引,表示切片到序列末尾,包含最后一个元素:

这个操作的效果是:在指定的区间内间隔取元素,语法格式为:

例如:

步长为正数时,它从起点移到终点,而步长为负数时,它从终点移到起点。

可以使用加法运算(+运算符)拼接两个序列:

从错误消息可知,不能拼接列表和字符串,虽然它们都是序列。一般而言,不能拼接不同类型的序列。

将序列与数x 相乘时,将重复这个序列x 次来创建一个新序列:

初始化一个长度为10的空列表:

成员资格检查判定一个元素是否存在于集合中,如存在返回True,否则返回False,实际上是一个布尔表达式。

语法:

例如:

内置函数 len 返回序列包含的元素个数,而 min 和 max 分别返回序列中最小和最大的元素。

Python通用的序列操作有:索引、切片、乘法、成员资格检查、长度、最小值和最大值。