Python 第二章 列表和元组(2) 通用序列操作
2014-12-02 21:45
465 查看
所有序列类型都可以进行某些特定的操作。
这些操作包括:索引、分片、加、乘以、检查成员资格、计算序列长度、找出最大元素和最小元素。
索引
序列中的所有元素都是有编号的——从0开始递增。这些元素可以通过编号分别访问。
>>> word = 'hello'
>>> word[0]
'h'
>>> word[1]
'e'
注意:这里字符串就是一个由字符串组成的序列。索引0指向第1个元素,在这个例子中就是字符h。
>>> word[-1]
'o'
索引的值也可以为负。最后1个元素的位置编号是-1.
这就是索引,可以通过元素的位置直接获取元素。
分片
分片操作用来访问一定范围内的元素。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]
>>> numbers[2:1]
[]
注意:分片中最左边的索引比右边的索引出现的晚,结果就是一个空的序列。
在这个例子中将numbers[a:b]中a看成左边界,b看成右边界。a边界包含在分片内,b边界不包含在分片内,而a和b之间都包含在分片内。
若用数学的区间来理解更方便一些即分片区间是[a, b). a值、a与b两点之间的整数值都是分片内的值。
>>> numbers[7:10]
[8, 9, 10]
注意:索引10指向的是第11个元素——这个元素并不存在,但这个索引却在numbers这个列表的最后一个元素之后。
这是为了让分片部分能够包含列表的最后一个元素,所以必须提供最后一个元素的下一个元素对应的索引作为边界。
1, 2, 3, 4, 5, 6 , 7, 8, 9, 10
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5 6 7 8 9 10
边界为负值的情况:
>>> numbers[-3: -1]
[8, 9]
我们知道索引-1已经是指向列表的最后一个元素了。那么分片的负数情况访问最后的元素呢?
>>> numbers[-3 : 0]
[]
这不是我们想要的结果。 幸好有个捷径,就是置空最后一个索引即可:
>>> numbers[-3:]
[8, 9, 10]
再看看置空前面的索引
>>> numbers[:3]
[1, 2, 3]
置空两边的索引
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
分片更大的步长
进行分片的时候,除了分片的开始和结束点两个参数之后,还有一个参数——步长。这个参数通常都是隐使设置的,在默认情况下,分片的步长是1.
分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的满足步长的元素。
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[::3]
[1, 4, 7, 10]
>>> numbers[::4]
[1, 5, 9]
步长为1,分片中的每个元素都被现实。
步长为2,分片中的从开始到结束每隔1个元素显示1个元素。
......
注意: 步长不能为0
步长为负数的情况(即从右到左提取元素):
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]
当使用一个负数作为步长的时候,必须让开始索引大于结束索引。
在没有明确指定开始索引和结束索引的时候,正数步长会从序列的头部开始向右提取元素,直到最后一个元素;负数步长,则从序列的尾部开始向左提取元素,直到第一个元素。
加
通过加号可以进行序列的连接操作:
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello ' + 'world!'
'Hello world!'
>>> [1, 2, 3] + 'Hello '
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
[1, 2, 3] + 'Hello '
TypeError: can only concatenate list (not "str") to list
注意:列表和字符串是无法连接在一起的,尽管它们都是序列。
简单来说,两种相同类型的序列才能进行连接操作。
乘
>>> 'Python' * 5
'PythonPythonPythonPythonPython'
>>> [42] *10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
>>> [None] * 5
[None, None, None, None, None]
用一个数字x乘以一个序列会生成新的序列,这个新序列原来序列重复x次来的。
注意:None是Pyhon的一个内建值,含义是“这里什么也没有”。一般用来初始化。
如果想创建一个占用五个元素空间,却不包括任何内容的列表。就用None。
成员资格
用in运算符来检查仪个值是否在序列中。in是个布尔运算符,是对一个条件的判断。若条件为真,则返回True; 若条件为假,则返回False.
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
>>> users = ['louis', 'tom', 'bob']
>>> raw_input('Enter you name: ') in users
Enter you name: louis
True
>>> raw_input('Enter you name: ') in users
Enter you name: Luke
False
长度、最小值和最大值
内建函数len、min和max常常用到。
len函数返回序列中元素的数量
min函数返回序列中最小的元素的值
max函数返回序列中最大的元素的值
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> len(numbers)
10
>>> min(numbers)
1
>>> max(numbers)
10
这里min和max函数的参数是一个序列
>>> max(1, 22, 33, 42)
42
>>> min(0, 4, -1)
-1
注意: max min函数的参数并不是以个序列,而是多个数字直接作为参数。
这些操作包括:索引、分片、加、乘以、检查成员资格、计算序列长度、找出最大元素和最小元素。
索引
序列中的所有元素都是有编号的——从0开始递增。这些元素可以通过编号分别访问。
>>> word = 'hello'
>>> word[0]
'h'
>>> word[1]
'e'
注意:这里字符串就是一个由字符串组成的序列。索引0指向第1个元素,在这个例子中就是字符h。
>>> word[-1]
'o'
索引的值也可以为负。最后1个元素的位置编号是-1.
这就是索引,可以通过元素的位置直接获取元素。
分片
分片操作用来访问一定范围内的元素。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]
>>> numbers[2:1]
[]
注意:分片中最左边的索引比右边的索引出现的晚,结果就是一个空的序列。
在这个例子中将numbers[a:b]中a看成左边界,b看成右边界。a边界包含在分片内,b边界不包含在分片内,而a和b之间都包含在分片内。
若用数学的区间来理解更方便一些即分片区间是[a, b). a值、a与b两点之间的整数值都是分片内的值。
>>> numbers[7:10]
[8, 9, 10]
注意:索引10指向的是第11个元素——这个元素并不存在,但这个索引却在numbers这个列表的最后一个元素之后。
这是为了让分片部分能够包含列表的最后一个元素,所以必须提供最后一个元素的下一个元素对应的索引作为边界。
1, 2, 3, 4, 5, 6 , 7, 8, 9, 10
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
0 1 2 3 4 5 6 7 8 9 10
边界为负值的情况:
>>> numbers[-3: -1]
[8, 9]
我们知道索引-1已经是指向列表的最后一个元素了。那么分片的负数情况访问最后的元素呢?
>>> numbers[-3 : 0]
[]
这不是我们想要的结果。 幸好有个捷径,就是置空最后一个索引即可:
>>> numbers[-3:]
[8, 9, 10]
再看看置空前面的索引
>>> numbers[:3]
[1, 2, 3]
置空两边的索引
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
分片更大的步长
进行分片的时候,除了分片的开始和结束点两个参数之后,还有一个参数——步长。这个参数通常都是隐使设置的,在默认情况下,分片的步长是1.
分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的满足步长的元素。
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[::3]
[1, 4, 7, 10]
>>> numbers[::4]
[1, 5, 9]
步长为1,分片中的每个元素都被现实。
步长为2,分片中的从开始到结束每隔1个元素显示1个元素。
......
注意: 步长不能为0
步长为负数的情况(即从右到左提取元素):
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]
当使用一个负数作为步长的时候,必须让开始索引大于结束索引。
在没有明确指定开始索引和结束索引的时候,正数步长会从序列的头部开始向右提取元素,直到最后一个元素;负数步长,则从序列的尾部开始向左提取元素,直到第一个元素。
加
通过加号可以进行序列的连接操作:
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello ' + 'world!'
'Hello world!'
>>> [1, 2, 3] + 'Hello '
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
[1, 2, 3] + 'Hello '
TypeError: can only concatenate list (not "str") to list
注意:列表和字符串是无法连接在一起的,尽管它们都是序列。
简单来说,两种相同类型的序列才能进行连接操作。
乘
>>> 'Python' * 5
'PythonPythonPythonPythonPython'
>>> [42] *10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
>>> [None] * 5
[None, None, None, None, None]
用一个数字x乘以一个序列会生成新的序列,这个新序列原来序列重复x次来的。
注意:None是Pyhon的一个内建值,含义是“这里什么也没有”。一般用来初始化。
如果想创建一个占用五个元素空间,却不包括任何内容的列表。就用None。
成员资格
用in运算符来检查仪个值是否在序列中。in是个布尔运算符,是对一个条件的判断。若条件为真,则返回True; 若条件为假,则返回False.
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
>>> users = ['louis', 'tom', 'bob']
>>> raw_input('Enter you name: ') in users
Enter you name: louis
True
>>> raw_input('Enter you name: ') in users
Enter you name: Luke
False
长度、最小值和最大值
内建函数len、min和max常常用到。
len函数返回序列中元素的数量
min函数返回序列中最小的元素的值
max函数返回序列中最大的元素的值
>>> numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> len(numbers)
10
>>> min(numbers)
1
>>> max(numbers)
10
这里min和max函数的参数是一个序列
>>> max(1, 22, 33, 42)
42
>>> min(0, 4, -1)
-1
注意: max min函数的参数并不是以个序列,而是多个数字直接作为参数。
相关文章推荐
- 【Python基础教程】第2章 列表和元组-2.2通用序列操作
- python备忘六:list 列表之序列通用操作
- python(一)列表与元组之序列基本操作
- Python 第二章 列表和元组(1) 序列概览
- python列表-序列通用操作
- 列表、元组及通用序列操作
- python--序列的基本概念和操作(序列:列表、元组、字符串)
- 列表和元组-通用序列基本操作
- python数据结构-序列\序列通用操作\列表(基本操作、方法)
- python的列表,元组,字典,序列,字符串的简单解说
- Python学习笔记《Python核心编程》第6章 序列:字符串、列表、元组
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- python 学习笔记 二 序列, 列表, 元组, 字符串
- 《python核心编程》序列:字符串、列表和元组Python: Attribute Error - 'NoneType' object has no attribute
- python 的序列方法,元组和列表的方法。
- 《Python 第二章》列表和元组
- <PY><core python programming笔记>C6 序列:字符串和列表和元组(三)
- python-数据结构(列表,元组,字典,序列,引用)
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- <PY><core python programming笔记>C6 序列:字符串和列表和元组(一)