- 序列是一块用于存放多个值的连续内存空间,并且按照一定顺序排列,每个值(称为元素)都分配一个数字,称为索引或者位置。
一、序列的一些通用操作
- 在Python中,序列结构主要有列表、元组、集合、字典和字符串,对于这些序列结构有以下几个通用操作。其中集合和字典不支持索引、切片相加和相乘操作。
1、索引
- 序列中的每个元素都有一个编号,也称为索引。这个索引是从左到右从0开始递增的。
- Python比较神奇,它的索引可以是负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引值是 -1,倒数第二个元素的索引值为 -2,以此类推。
- 在采用负数作为索引值时,是从-1开始的,而不是从0开始的,即最后一个元素的下标为-1,这是为了防止与第一个元素重复。
2、切片
3、序列相加
- 在Python中,支持两种相同类型的序列相加操作,即将两个序列进行拼接,不会去除重复的元素,使用(+)运算符实现。
- 在进行序列相加时,相同类型的序列是指同为列表、元组、集合等,序列中的元素类型可以不同。
4、序列乘法
- 在Python中,使用数字n乘以一个序列会生产一个新的序列。新序列的内容为原来序列被重复n次的结果。
- 在进行序列的乘法运算时,还可以实现初始化指定长度列表的功能。如,
emptyList = [None]*5
5、序列中常用的函数
函数 | 作用 |
---|
in关键字 | 检查某个元素是否包含在某个序列中 |
len() | 计算序列的长度 |
max() | 返回序列中的最大元素 |
min() | 返回序列中的最小元素 |
list() | 将序列转化为列表 |
tuple() | 将序列转化为元组 |
set() | 将列表、元组等可迭代对象转换为集合 |
str() | 将序列转化为字符串 |
sum() | 计算序列元素的和 |
sorted() | 对元素进行排序 |
reversed() | 反向序列中的元素 |
enumerate() | 将序列组合为一个索引序列,多用在 for 循环中 |
type() | 测试变量的类型 |
二、列表(List)
- 在形式上,列表的所有元素都放在一对中括号”[]“中,两个相邻元素间使用”,“分隔。
- 在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到列表中,并且同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。
- 使用列表时,虽然可以将不同数据类型的数据放入同一个列表中,但是通常情况下,我们不会这样做,而是在一个列表中只放入一种类型的数据。这样可以提高程序的可读性。
1、遍历列表
for item in listname:
for index, item in enumerate(listname):
2、列表的常用函数
函数 | 功能 |
---|
append() | 在列表的末尾追加元素 |
insert() | 向列表的指定位置插入元素 |
extend() | 将一个列表中的全部元素添加到另一个列表中 |
remove() | 根据元素值删除列表中的元素,首先判断该元素是否存在 |
count() | 获取指定元素出现的次数 |
index() | 获取指定元素首次出现的下标 |
3、列表推导式
三、元组(tuple)
- 在形式上,元组的所有元素都放在一对"()“中,两个相邻元素之间使用”,"分隔。
- 在内容上,可以将任何类型的内容放入到元组中,并且在同一个元组中,元素的类型可以不同,因为它们之间没有任何关系。通常情况下元组用于保存程序中不可修改的内容。
- 从元组和列表的定义上看,这两种结构比较相似,二者之间的主要区别为:元组时不可变序列,列表是可变序列。即元组中的元素不可以单独修改,而列表则可以任意修改。(不能向元组中添加、删除和修改元素)
- 在Python中,使用一对小括号将所有的元素括起来,但是小括号并不是必须的,只要将一组值用逗号分隔开来,Python就可以视其为元组。例如
tuple1 = 12, 13, 16
- 如果要创建的元组只包括一个元素,则需要在定义元组时,在元素的后面加上一个逗号”,“。例如,
verse1 = 12,
- 使用元组推导式可以快速生产一个元组,它的表现形式和列表推导式类似,只是将列表推导式中的"[]“修改为”()"。
四、字典(dictionary)
- 字典与列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存的内容是以“key-value”对的形式存放的。key是唯一的,而值可以有多个。字典在定义一个包含多个名字字段的对象时,很有用。
- 字典的主要特征如下:
- 通过key而不是通过索引来读取。
- 字典有时也被称为关联数组或者散列表(hash)。它是通过key将一系列的值联系起来的,这样就可以通过key从字典中获取指定项,但不能通过索引来获取。
- 字典是任意对象的无序集合。
- 字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找效率。
- 字典是可变的,并且可以任意嵌套。
- 字典中的key是唯一的。
- 不允许同一个key出现两次,如果出现两次,则后一个value会被记住。
- 字典中的key必须不可变。
- 字典中的key是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。
- Python中的字典相当于Java或者C++中的Map对象。
1、字典的创建
dictionary = {}
dictionary = dict()
dictionary = dict(zip(list1, list2))
dictionary = dict(key1=value1, key2=value2, ..., key3=value3)
dictionary =dict.fromkeys(list_name)
zip()函数
:用于将多个列表或者元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想要获取元组,可以将zip对象使用tuple()函数转化为元组;如果想要获取列表,则可以使用list()函数将其转换为列表。
2、遍历字典
- 使用字典对象的 item() 方法可以获取字典的可遍历的(key-value)的元组列表:
for item in dictionary.items():
print item
for key, value in dictionary.items():
print("{}-{}".format(key, value))
- 在Python中,字典对象还提供了
values()
方法和keys()
方法,用于返回字典的 “值” 和 “键” 列表,它们的使用方法同 items()
方法类似,也需要通过 for 循环遍历该字典列表,获取对应的值和键。
3、字典推导式
randomdict = {i:random.randint(10, 100) for i in range(1, 5)}
五、集合(set,无序可变集合)
- 在形式上,集合的所有元素都放在一对"{}“中,两个相邻元素之间使用”,"分隔。集合最好的应用就是去除重复元素,因为集合中的每个元素都是唯一的。
- 在创建集合时,如果输入了重复的元素,Python会自动只保留一个。
- 由于Python中的set集合时无序的,所以每次输出时元素的排列顺序可能都不相同。
- 在创建空集合时,只能使用函数set()实现,而不能使用一对"{}“实现,这是因为python中直接使用一对”{}"表示创建一个字典。
1、set的常用函数
函数 | 功能 |
---|
add() | 向集合中添加一个元素 |
pop() | 随机移除一个元素 |
remove() | 移除一个指定的元素,如果元素不存在抛出异常 |
clear() | 清空集合 |
2、 集合的交集、并集和差集运算
- 集合最常用的操作就是进行交集、并集、差集和对称差集运算。进行交集运算时使用 “&” 符号,进行并集运算时使用 “|” 符号,进行差集运算时使用 “-” 符号,进行对称差运算时使用 “^” 符号。
六、list、tuple、dictionary、set的区别
数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
---|
list | 可变 | 可重复 | 有序 | [] |
tuple | 不可变 | 可重复 | 有序 | {} |
dictionary | 可变 | 可重复 | 无序 | {key:value} |
set | 可变 | 不可重复 | 无序 | {} |