在Python中,组合数据类型包括以下四种:
-
列表(List):列表是一种可变序列,它包含有序的元素,可以通过下标访问、添加、删除等操作。可以存储任意类型的对象,使用方括号 [] 定义,元素之间用逗号隔开。
-
元组(Tuple):元组是一种不可变序列,与列表相似,但定义后不可修改,通常用于存储多个值,在 Python 中也可以返回多个值,使用小括号 () 定义,元素之间用逗号隔开。
-
字典(Dictionary):字典是一种键-值对的映射,用于存储具有映射关系的数据,键和值之间用冒号 : 隔开,多个键值对之间用逗号隔开,使用花括号 {} 定义。
-
集合(Set):集合是一种无序、不重复的数据类型,用于存储非重复元素的集合,支持交、并、差等集合运算,使用花括号 {} 或 set() 构造函数来定义。
它们可以完成很多常见的数据处理、数据结构和算法等任务。同时,他们之间可以嵌套使用,以达到多种使用目的。
(字符串也可以视作一种数据类型)
在前文中,我们讲解过字符串的处理的一些知识,相应的,在组合数据类型中,有很多是可以进行通用的,例如元素的访问、切片,数据长度的提取等,很多是可以举一反三的,由于篇幅的原因,不再进行逐一归类。
一、列表
在 Python 中,列表是一种用于存储有序元素集合的数据类型,其基本形式是用方括号 [ ] 包围,并且每个元素之间用逗号分隔。拥有以下特点:
其中的元素可以是任何数据类型,例如整数、浮点数、字符串、布尔值等等,也可以包含其他的列表。
列表是可变的,这意味着可以通过索引对其进行修改、添加或删除元素。
如果要访问列表中的元素,可以使用索引来获取元素,索引从零开始,和字符串类似。
可以使用切片来提取子列表,和字符串类似,
列表有很多内置方法,例如 append()、insert()、remove()、sort() 等等,可以用于操作列表。
1.列表的创建
你可以使用以下方式创建一个列表:
# 创建一个空列表
list = []
# 创建一个整数列表
my_list = [1, 2, 3, 4, 5]
# 创建一个混合类型(包含整数、浮点数、字符串)的列表
your_list = [1, 2.0, 'hello', 4]
2.列表的形式
列表既可以是单独使用的一个数据类型,也可以和其他数据类型、列表本身相嵌套使用
列表嵌套列表:
[[1, 2, 3], ['a', 'b', 'c']]
列表嵌套元组、字典、组合:
[(1, 2, 3), ('a', 'b', 'c')]
[{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]
[{1, 2, 3}, {2, 3, 4}]
列表里也可以进行不同种数据类型的嵌套
[[1, 2, 3],("a", "b", "c"),{"name": "Alice", "age": 30}]
3.对列表中的元素进行索引和访问
在Python语言中,列表中的每个元素都有其相应的位置编号,类似于字符串,列表的位置编号从0开始,最后一位的编号为列表的长度减一,也可以为-1,列表的长度可以用len()函数获取,
my_list = [10, 20, 30, 40, 50]
print(my_list[0]) # 访问第一个元素,输出: 10
print(my_list[2]) # 访问第三个元素,输出: 30
print(my_list[-1]) # 访问最后一个元素,输出: 50
列表除了可以根据位置编号直接访问元素之外,还可以进行“切片”访问一系列元素,语法为 a[start:stop],其中 start 和 stop 都是可选参数,表示开始和结束位置。如果省略 start,则默认从列表开头开始切片;如果省略 stop,则默认切到列表末尾,更具体的,参考字符串部分的切片访问方法——程序设计基础
my_list = [10, 20, 30, 40, 50]
print(my_list[1:4]) # 输出: [20, 30, 40]
4.对列表中的元素进行操作、处理
列表中的元素是有序存放的,同时也是一种可变的数据类型,那么意味着我们可以增、删、改、替列表中的任意一项或几项元素,当然其中元素的个数也是可变的。
(1)、元素的修改
我们可以直接通过索引来更改列表中的元素
my_list = [10, 20, 30, 60]
my_list[1] = 25 # 将索引为1的元素从20修改为25
my_list[-1] = 30 # 将索引为-1的元素从60修改为30
print(my_list) # 输出: [10, 25, 30, 30]
(2)、元素的增加
我们对列表中元素进行添加有两种方式,一种是append()方法,另一种是insert()方法
- append() 方法向列表末尾添加一个元素
- insert() 方法在列表的任何位置插入一个元素
append()方法用法为:列表名.append(新元素)
insert()的用法为: 列表名.insert(索引,新元素)
my_list = [10, 20, 30]
my_list.append(40) # 在末尾添加一个元素
print(my_list) # 输出: [10, 20, 30, 40]
my_list.insert(1, 15) # 在索引为1的位置插入一个元素
print(my_list) # 输出: [10, 15, 20, 30, 40]
(3)、元素的删除
如果需要对一个列表中的元素进行删除,我们有三种基础的处理方式,即del、remove()、pop()
remove()
方法删除列表中指定的元素pop()
方法删除并返回指定索引的元素del
语句删除指定位置的元素
del的使用方法为: del 列表名[索引]
remove()的使用方法为: 列表名.remove(元素值)
pop()的使用方法为: 列表名.pop(索引)
my_list = [10, 20, 30, 40]
my_list.remove(20) # 删除值为20的元素
print(my_list) # 输出: [10, 30, 40]
popped_elem = my_list.pop(1) # 删除索引为1的元素,并返回该元素
print(popped_elem) # 输出: 30
print(my_list) # 输出: [10, 40]
del my_list[0] # 删除索引为0的元素
print(my_list) # 输出: [40]
注:
- 在使用pop方法时,如若未给出索引,则默认删除列表的结尾元素
- 在使用remove方法时,如果在列表中存在两个相同的元素与需要被删除的元素一样,那么使用remove方法,只会删去排在前面的,即索引值较小的元素例如
my_list = ['apple', 'banana', 'orange', 'pear']
popped_elem = my_list.pop() # 删除最后一个元素
print(popped_elem) # 输出: 'pear'
print(my_list) # 输出: ['apple', 'banana', 'orange']
my_list=[10,20,30,40,30,50,60]
my_list.remove(30)
print(my_list) #输出[10, 20, 40, 30, 50, 60]
值得注意的是,在列表使用中,我们在有些情况下会将一个列表复制到另一个变量名,并对这个新的列表进行一些操作。此时,我们就要注意了:
如果:
a=[1,2,3,4,5]
b=a
b.remove(1)
print(a)
print(b)
#此时a、b的值均为[2,3,4,5]
直接将a列表赋值给b变量,那么在对b变量进行操作时,原列表也会受到影响而产生变动,此时,我们要采用copy()来复制这个列表,即:
a=[1,2,3,4,5]
b=a.copy()
b.remove(1)
print(a)
print(b)
#输出结果为:
#[1, 2, 3, 4, 5]
#[2, 3, 4, 5]
同时,需要注意的是,在进行诸如remove()这种操作时,以下这个表达式是错误的
b=b.remove(1)
print(b)
#输出结果为None
即:并非返回一个列表,而只是修改原来的列表,所以如果用“=”输出的话,返回是None 。
去掉返回值即可得到新的列表!
二、元组
三、字典
四、集合
(未完待续)