列表类型
-
数组
- 在Python中,实际上并没有一个专门的“数组”数据类型
- 通常是指NumPy库中的
ndarray(N维数组)对象 - 而Python的标准数据类型中,有一个“列表”(list),它可以用来存储一系列有序的元素
# 数组 import numpy as np arr1 = np.array([1, 2, 3, 4, 5]) arr2 = np.array(["a", "b", "c"]) print(arr1, type(arr1)) print(arr2, type(arr2))[1 2 3 4 5] <class 'numpy.ndarray'> ['a' 'b' 'c'] <class 'numpy.ndarray'>
-
列表
- 定义:
- 列表(List)是Python中非常常用的一种数据结构
- 它可以包含任意类型的数据项,如整数、浮点数、字符串、其他列表等,并且列表中的数据项之间是有序的
- 特性:
- 有序:列表中的元素具有明确的位置
- 可变:列表创建后,可以修改其中的元素
- 可重复:同一个元素可以在列表中出现多次
- 定义:
-
创建列表
- 使用 [] 创建
# 通过[]创建列表 list1 = [1, 2, 3, 4, 5] list2 = ["a", "b", "c"] list3 = [1, 0.1, "a", True, [1, 2, 3]] print(list1, type(list1)) print(list2, type(list2)) print(list3, type(list3))[1, 2, 3, 4, 5] <class 'list'> ['a', 'b', 'c'] <class 'list'> [1, 0.1, 'a', True, [1, 2, 3]] <class 'list'> - 使用list()函数创建
# 通过list函数 list4 = list(range(5)) list5 = list("hello") print(list4, type(list4)) print(list5, type(list5))[0, 1, 2, 3, 4] <class 'list'> ['h', 'e', 'l', 'l', 'o'] <class 'list'>
- 使用 [] 创建
-
索引和切片
# 索引和切片 list6 = list1[1:3] print(list6) list7 = list1[::2] print(list7)[2, 3] [1, 3, 5] -
列表常用方法
方法 含义 append 在列表末尾添加元素(参数为值,改变原列表) insert 在指定索引前插入元素(参数为索引和值,改变原列表) remove 删除列表中首次出现的指定元素(参数为值,改变原列表) pop 删除并返回列表中指定索引的元素,如果不指定位置则默认删除最后一个元素(改变原列表) extend 将一个列表的所有元素添加到另一个列表的末尾(参数为要添加的列表,改变原列表) index 返回指定元素在列表中的第一个出现的索引位置 count 返回指定元素在列表中出现的次数 sort 对列表中的元素进行排序(改变原列表) sorted(内置函数) 对列表中的元素进行排序(不改变原列表) # 方法 numbers = [1, 3, 3, 4, 4, 5] print(numbers) numbers.append(6) print(numbers) numbers.insert(1, 2) print(numbers) numbers.remove(3) print(numbers) numbers.pop(4) print(numbers) numbers.pop() print(numbers) numbers.extend([6, 7, 8, 10, 9]) print(numbers) numbers.sort() print(numbers) print(sorted(numbers)) # 内置函数,不改变原列表 print(numbers.index(1)) print(numbers.count(1))[1, 3, 3, 4, 4, 5] [1, 3, 3, 4, 4, 5, 6] [1, 2, 3, 3, 4, 4, 5, 6] [1, 2, 3, 4, 4, 5, 6] [1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 6, 7, 8, 10, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 0 1
第3集 字典类型
-
含义
- 字典是一种可变、无序且键值对(key-value)的数据结构
-
创建
- 字典是通过大括号
{}创建的,键值对之间用逗号,分隔 - 键(Key)是唯一的,通常是不可变类型(如整数、浮点数、字符串、元组),值(Value)可以是任意类型
- 字典是通过大括号
-
访问字典值
- 通过键来访问字典中的值
-
修改字典的值
- 可以直接通过键来修改字典中的值
-
添加字典的元素
- 如果键不存在,可以直接添加键值对
-
删除字典元素
- 使用 del 或者 pop() 删除字典元素
- popitem() 按照插入顺序删除,旧版本3.7以前是随机删除并返回一个元素(键值对)
- clear() 清空字典
-
例:
# 字典 person1 = { "name": "Steven Wong", "age": 29, } print(person1) print(person1["name"]) print(person1.get("age", "Not Found")) print(person1.get("sex", "Not Found")) person1["age"] = 30 person1["sex"] = "男" print(person1) del person1["sex"] print(person1) print(person1.pop("age")) # 返回元素的值(30) print(person1) # person1.popitem() # 按照插入顺序删除,旧版本3.7以前是随机删除并返回一个元素(键值对) person1.clear() print(person1){'name': 'Steven Wong', 'age': 29} Steven Wong 29 Not Found {'name': 'Steven Wong', 'age': 30, 'sex': '男'} {'name': 'Steven Wong', 'age': 30} 30 {'name': 'Steven Wong'} {} -
常用方法
keys():返回字典中所有的键(输出的是视图对象,并不是列表)values():返回字典中所有的值(输出的是视图对象,并不是列表)items():返回字典中所有的键值对(输出的是视图对象,并不是列表)update():使用另一个字典的键值对更新当前字典# 方法 person2 = { "name": "Steven Wong", "age": 29, } print(person2.keys()) print(list(person2.keys())) print(person2.values()) print(list(person2.values())) print(person2.items()) print(list(person2.items())) person2.update({"age": 30, "sex": "男"}) print(person2)dict_keys(['name', 'age']) ['name', 'age'] dict_values(['Steven Wong', 29]) ['Steven Wong', 29] dict_items([('name', 'Steven Wong'), ('age', 29)]) [('name', 'Steven Wong'), ('age', 29)] {'name': 'Steven Wong', 'age': 30, 'sex': '男'}
-
字典推导式
- 类似于列表推导式,可以快速生成字典
# 字典推导式 keys = ["name", "age"] values = ["Steven Wong", 29] print({k: v for k, v in zip(keys, values)}){'name': 'Steven Wong', 'age': 29}for k, v in zip(keys, values):这是一个for循环,它解包遍历zip(keys, values)产生的迭代器 [('a', 1), ('b', 2), ('c', 3)] 在每次迭代中,k取元组的第一个元素(即来自keys),v取元组的第二个元素(即来自values) {k: v...}:对于每次迭代,这表示一个新的键值对,其中k是键,v是值,包裹在大括号中,表示正在生成一个新的字典
- 类似于列表推导式,可以快速生成字典
元组类型
-
定义
- 元组是一个不可变的序列类型,用于存储一系列按特定顺序排列的元素
- 一旦元组被创建,它的内容就不能被修改,也就是说,你不能添加、删除或更改元组中的元素
-
创建
- 使用圆括号
()将元素括起来,元素之间用逗号,分隔
- 使用圆括号
-
特性
- 不可变性:元组一旦创建,其元素就不能被修改
- 有序性:元组中的元素按照定义的顺序进行排列
- 可索引:和列表一样,元组也可以通过索引访问元素
- 可切片:可以使用切片操作获取元组中的一部分元素
- 元组可以包括列表(可变的),外部改变了列表,但是元组的结构不变
# 元组 tuple1 = (1, 0.1, "a", True, [1, 2, 3]) tuple2 = (1,) # 只有一个元素的元组 print(tuple1) print(tuple2) print(tuple1[0]) print(tuple1[1:3]) tuple1[4].pop() print(tuple1)(1, 0.1, 'a', True, [1, 2, 3]) (1,) 1 (0.1, 'a') (1, 0.1, 'a', True, [1, 2])
-
常用方法
count(value):返回元组中指定值出现的次数index(value):返回指定值在元组中第一次出现的索引,如果未找到则抛出异常
-
操作
- 拼接
- 重复
- 判断存在
- 元组长度
- 解包
- 比较
- 通过重新赋值创建新的元组
- 元组作为字典键(由于元组不可变性,可以作为字典的键,而列表等可变类型则不能)
tuple1 = (1, 0.1, 'a', True, [1, 2]) # 方法操作 print(tuple1.count(1)) # True print(tuple1.index(True)) print(tuple1 + tuple2) print(tuple1 * 2) print(1 in tuple1) print(0 in tuple1) print(len(tuple1)) a, b, c, d, e = tuple1 print(a, b, c, d, e) print(tuple1 == tuple2) tuple1 = tuple1 + tuple2 print(tuple1) dict1 = {(1, 2): "a", (3, 4): "b"} print(dict1[(1, 2)]) print(dict1[(3, 4)])2 0 (1, 0.1, 'a', True, [1, 2], 1) (1, 0.1, 'a', True, [1, 2], 1, 0.1, 'a', True, [1, 2]) True False 5 1 0.1 a True [1, 2] False (1, 0.1, 'a', True, [1, 2], 1) a b
集合类型
-
定义
- 集合是一个无序且不包含重复元素的数据类型
-
特性
- 无序性:集合中的元素没有特定的顺序
- 互异性:集合中的元素是唯一的,不重复
-
创建
-
使用大括号
{}(不能创建空集合)或set()函数来创建集合set1 = {1, 2, 3, 4, 5} set2 = {3, 4, 5, 6, 7} # set1 = set([1, 2, 3, 4, 5]) print(set1){1, 2, 3, 4, 5} -
利用集合去重
list1 = [1, 2, 3, 3, 4, 5] print(list(set(list1))) # 去重[1, 2, 3, 4, 5]
-
-
基本操作
- 添加元素:使用
add()方法或更新操作符|= - 删除元素:使用
remove()或discard()方法,或使用pop()移除并返回随机元素(如果集合非空) - 判断元素是否存在:使用
in关键字 - 集合的长度:使用
len()函数reset1 = {1, 2, 3, 4, 5} set1.add(6) print(set1) set1.remove(6) print(set1) print(1 in set1) print(len(set1)){1, 2, 3, 4, 5, 6} {1, 2, 3, 4, 5} True 5
- 添加元素:使用
-
运算
- 交集:使用
&运算符方法 - 并集:使用
|运算符方法 - 差集:使用
-运算方法 - 对称差集:使用
^运算符方法set1 = {1, 2, 3, 4, 5} set2 = {3, 4, 5, 6, 7} # 运算 print(set1 & set2) # 交集 print(set1 | set2) # 并集 print(set1 - set2) # 差集 print(set1 ^ set2) # 对称差集{3, 4, 5} {1, 2, 3, 4, 5, 6, 7} {1, 2} {1, 2, 6, 7}
- 交集:使用
-
方法
clear():清空集合copy():返回集合的浅拷贝set1 = {1, 2, 3, 4, 5} set2 = {3, 4, 5, 6, 7} # 方法 set1.clear() print(set1) set3 = set2.copy() # 浅拷贝 print(set3)set() {3, 4, 5, 6, 7}