1、数据类型概述
① 工程项目中根据数据类型的特点,将python中的数据类型,区分为基本数据类型、组合数据类型以及复杂数据类型;
基本数据类型中又区分为字符串str类型,用来描述信息;整数类型int以及浮点数类型float,用来描述数值;布尔类型bool,用来描述只有两种结果的数据。
组合数据类型又区分为列表list,可以存放有顺序的可以重复的可以是不同数据类型的多个数据;元组tuple,和列表的特征相同,同时元组中的数据不能修改;集合set中可以存放不能重复的没有顺序的可以是不同数据类型的数据;字典dict用来按照key:value这样的键值对存放多组有顺序的、key不能重复但是value可以重复的多组数据。复杂数据类型用来描述一些数据较为复杂的对象的。
② python官方将使用的数据类型区分为两种数据类型,基础数据类型和复杂数据类型基础数据类型包含描述信息的字符串str,描述数值的整数int、浮点数float以及描述只有两种结果数据的布尔类型bool
复杂数据类型就是通过class定义的类型,用来描述包含复杂属性数据的对象类型
2、组合数据类型
组合类型主要是用来在一个容器中存储多个数据的数据类型。
(1) 列表-list
列表:组合数据类型的一种,主要用于存放有顺序的、可以重复的、可以是不同的数据类型的多个数据。
# 声明列表lst = list()lst = []# 列表切片查询lst[start:end:step] # 高级查询:范围查询# 列表常规操作L.append()/L.insert()/L.extend()/L.pop()/L.pop(index)/L.remove(obj)/L.clear()/del LL.count(obj)/L.index(obj)L.sort()/L.reverse()L[index] = dataprint(L[index])print(len(L))
① 列表的拓展:推导式
基本语法:变量 = [推导式] 根据推导式的条件,直接获取数据组成一个新的列表变量 = [临时变量 for 临时变量 in 一串数据][x[0] for xin lst]for循环遍历一串数据,得到数据之后组成一个新的列表,参考综合案例1变量 = [临时变量 for 临时变量 in 一串数据 if 条件][xfor xin range(1, 20) if x % 2 == 0]for循环遍历一串数据,得到的数据经过if条件筛选组成新的列表数据变量 = [临时变量1,临时变量2 for 临1 if 临1条件 for 临2 if 临2条件]推导式中使用两个for循环组织数据
综合案例:
有一个列表lst = [[1,2,3], [4,5,6], [7,8,9]]
a.需要从上面的列表获取一个新的列表[1,4,7],应该怎么操作?代码实现以下
b.需要从上面的列表获取一个新的列表[1,5,9],应该怎么操作?代码实现以下
c.需要从上面的列表获取一个新的列表[1,2,3,4,5,6,7,8,9],应该怎么操作?
d.爬虫需要定时采集实时数据,每天每个小时间隔半个小时采集一次数据,请按照要求定义好时间列表?
(2) 元组-tuple
① 什么是元组
元组是python中组合数据类型的一种,使用关键字tuple表示元组中可以存放 有顺序的、可以重复的、可以是不同数据类型的 多个数据,数据一旦存放到元组中,数据不允许被修改(更换)。
② 元组的声明
常见问题:声明一个元素的元组
声明非空元组
元组的使用场景:工程项目中什么情况下使用元组?
元组用在项目中的一些固定数据的声明上,在工程开发过程中为了保证一些特定数据不被误操作修改导致项目出现问题,可以选择使用元组来强制约束固定的数据如:hero_line = ("上单", "下单", "中单", "打野", "辅助")
③ 元组的操作方式
help()怎么操作?
T.count(obj):查询数据obj在元组中出现的个数
T.index(obj):查询数据obj在元组中出现的位置
(3) 集合-set
① 什么是集合
集合是Python中组合数据类型的一种,python语法中使用关键字set表示集合中可以存放 没有顺序的、不能重复的、可以是不同数据类型的多个数据!
② 集合的声明
声明一个空集合
声明非空集合
推荐使用第二种
③ 集合的操作
① 查看集合的操作方式:dir()
② 单个集合的操作
add(obj): 向集合中增加一个数据discard(obj): 删除集合中的一个指定数据(如果数据不存在就什么都不做)remove(obj):删除集合中的一个指定数据(如果数据不存在就报错)pop(): 随机删除集合中的一个数据clear(): 清空集合中的数据copy(): 复制一个集合
③ 多个集合的操作
s1 = {1,2,3,4,5,6}s2 = {4,5,6,7,8,9}s1.difference(s2):s1集合相对于s2集合的差集s1.difference_update(s2):s1集合相对于s2集合的差集,将数据赋值给s1s1.symmetric_difference(s2):获取s1和s2共同的差集s1.symmetric_difference_update(s2):xxxxxxs1.intersection(s2): s1集合和s2集合的交集s1.intersection_update(s2): 获取s1和s2的交集,将交集数据赋值给s1s1.union(s2): 获取s1和s2的并集s1.update(s2): 获取s1和s2的并集,并将所有数据赋值给s1
(4) 字典-dict
① 什么是字典
字典是Python中的组合数据类型之一,使用关键字dict表示。字典中可以存储多个key:value(键值对)数据,key不能重复,value可以重复,字典中可以直接通过key获取到对应的value数据。
② 声明字典
#声明空字典dct1 = dict()print(dct1,type(dct1))# {} <class 'dict'>dct2 = {}print(dct2,type(dct2))# {} <class 'dict'>
声明非空字典#声明空字典dct1 = dict([("地址","CSDN"),("作者","dongai_lei")])print(dct1,type(dct1))#{'地址': 'CSDN', '作者': 'dongai_lei'} <class 'dict'>dct2 = {"地址":"CSDN","作者":"dongai_lei"}print(dct2,type(dct2))#{'地址': 'CSDN', '作者': 'dongai_lei'} <class 'dict'>
③ 字典的操作
字典中增加数据
# 向字典中增加数据d = {}d["666"] = "CSDN" # 使用较多的方式# 一次只能增加一个键值对数据d.setdefault("作者","dongai")# 一次增加多个键值对数据d.update({"战士":"诺克萨斯之手","ADC":"伊泽瑞尔"})print(d)
字典中修改数据
# 修改字典中的数据 :修改Value的值d["AD"] = "薇恩"# key存在的情况下会修改数据d.update({"鬼谷子":"小谷"})
字典中删除数据
#字典中删除数据d.pop("666") #使用较多的操作d.popitem() #随机删除有一个del d["作者"] #使用python变量操作语法d.clear() #清空字典中的所有数据print(d)
字典中查询数据
# 查询数据d = {'666': 'CSDN','作者': 'dongai', '战士': '诺克萨斯之手','ADC': '伊泽瑞尔'}print(d["666"]) #通过key查询value数据print(d.get("666")) #通过key查询value数据(只能用来查询)print(d.keys()) #获取所有的key数据print(d.values()) #获取所有的value数据print(d.items()) #获取所有的key:value数据
特殊查询:遍历数据
#遍历字典中的数据for key in d.keys():# 循环遍历key数据print("key:",key,",value:",d.get(key))print("----------------------")for key,value in d.items():print("key:",key,";value:",value)