赞
踩
一、列表 list
二、元组 tuple
三、集合 dict
四、字典 set
扩展:
命令行清屏 import os # 告诉 python 解释器,我们要使用os(operation 操作 system 系统)功能
os.system(“cls”) # cls:cleans 清除
- 通过dir() help非常实用 本章有提到QAQ
- 如通过 help(list.append)查看 append()方法的作用,dir(dict)
组合数据类型 | 知识 | 内容 | 特性 |
---|---|---|---|
list 列表 [ ] | 增删改查 | 1、什么是列表 2、列表怎么声明 3、列表的操作(增删改查) | 列表list 中可以存储有顺序、可重复、不同数据类型的多个数据 [可以索引] |
tuple 元组() | 元组特性 | 1、什么是元组 2、元组的声明 3、元组的操作 4、使用场景 | 可以存储有顺序的存放可以重复的不同数据类型[一旦存放无法修改、可索引] |
set 集合 {} | 结合特性和数学运算 | 1、集合的特点 2、集合的声明 3、集合的操作 4、适用场景 | 无序性、不可重复、不同数据[不可索引] |
dict 字典 {“键”:“值”} | 增删改查 | 1、字典的特点 2、字典的声明 3、字典的使用 4、适用场景(案例:用户登录) | {“key”:“value”}key不可以重复、value是可以重复的,存放的数据没有顺序[不可索引] |
1、什么是列表?
列表是组合数据类型的一种,可以按照有顺序的方式、存储不同数据类型的、可以重复的多个数据。
列表和变量一样,都是需要声明之后才能使用的!列表的操作方式有两种
2、列表怎么声明?
声明一个空列表 | 使用python关键词声明优先推荐 | a = list() |
声明一个空列表 | 使用符号声明 | names = [ ] |
声明一个非空列表 | 使用符号声明 | names = [“wenwnec9”,1,“jane”] |
声明一个空列表 | 使用符号声明不推荐,繁琐 | names = list([ “wenwenc9”,1]) |
类型转换 | s = “wenwnec9” s2 = list(s) | 其它类型转为为列表数据 |
3、列表的操作
列表的常见操作:列表作为一个数据容器,存放大量的数据
生活中/代码中,对于容器中的数据的操作方式,固定的四种方式
- 增加数据
- 删除数据
- 修改数据
- 查询数据 遍历数据[for 循环遍历数据,将所有的数据依次查看]
- 序列 索引 切片 解包 边界检查 列表嵌套 深浅拷贝
序列 索引 切片
序列解包
(1) 增加数据
names = lsit( )
方法 | 描述 | 案例 |
---|---|---|
names.append() | 列表末尾增加数据 | names.append(“卢本伟”) |
names.insert() | 列表的指定位置增加数据 | names.insert(0,“55开”) |
names.extend() | 列表末尾增一组数据 ,如果是列表,将列表拆开依次追加 | names.extend([“稳稳c9”,“admin”]) |
(2) 修改数据
假设 names = [“2”,“稳稳”]
操作 | 描述 | 案例 |
---|---|---|
L[编号] = 新数据 | 将数据存储在指定编号的位置,该位置原有的数据就被覆盖了 | names[1] = “10086” names = [“2”,“10086”] |
(3) 查询数据
查询数据,就是确认数据在列表中的保存方式
- 全部查看
- 查看某个数据的位置
- 查看某个位置的数据
- 查看某个数据出现的次数
操作 | 描述 | 案例 |
---|---|---|
for 循环遍历 | 查询列表中的所有数据 | for a in names |
直接使用列表名称 | 查看所有数据,固定查看方式 | print(names) |
names.index() | 查看某个数据第一次出现的位置 | names.index(“稳稳”) |
names[编号] | 通过编号查看某个位置的数据 | names[0] |
names.count() | 查看某个数据出现的次数 | names.count(“稳稳”) |
案例操作:
#定义一个列表 names = ["1","老王","稳稳","2","1"] #for 循环遍历 for key in names : print(key) #直接使用列表明 print(names) #查看某个第一次数据出现的位置 print(names.index("稳稳")) #通过编号 #可以通过len()知道列表有多少个元素 这里得到结果5 元素索引从0开始 a = len(names) print(a) print(names[2]) #计算某个数据出现的次数 print(names.count("1"))
(4) 删除数据
删除数据的操作:如果列表中出现了一些不需要的数据,可以按照指定的方式进行删除
类似项目中~
用户担心自己的账号信息泄露~一旦不再使用某个网站,就会注销账号[删除]
用户删除自己相册中的照片数据.
操作 | 描述 | 案例 |
---|---|---|
names.remove | 删除指定的一个数据 | names.remove(“稳稳”) |
names.pop() | 删除末尾一个数据 如果是names.pop(编号) 就可以指定位置的数据 | names.pop() names.pop(2) |
del names[编号] | python 语法删除数据 | del names[2] |
names.clear() | 清空列表 | 将列表中的所有数据全部删除 |
代码:
#定义一个列表 names = ["1","老王","稳稳","2","1"] #remov() names.remove("1") print(names) #pop() names.pop() print(names) #del names[编号] del names[0] print(names) #clear() names.clear() print(names)
(5) 其它操作
操作 | 描述 |
---|---|
names.sort() | 对列表中的数据排序 注意:列表中的数据必须都是同一种数据类型 |
names.reverse() | 将列表中的数据翻转 |
len(names) | 获取列表中的所有数据个数 |
max(names) | 获取列表中的最大一个数据,所有数据都必须是同一种数据类型-并且数据时可以比较的 |
min(names) | 获取最小数据,同一种数据类型 |
(6) 边界检查
(7) 列表嵌套
(8) 列表深浅拷贝
预备知识 |
---|
Python 中的数据类型包括:bool、int、float、str、set、list、tuple等等。我们大致可以将这些数据类型归类为简单数据类型和复杂数据类型 |
简单数据类型:bool、int、float、str 复杂数据类型:list、tuple、set、dict |
这里单独拿出来参考我的另外篇文章:https://blog.csdn.net/weixin_44238683/article/details/105730962
(9) 案例操作
案例一:学生信息等级系统
""" 学生信息录入系统 开发步骤 1、定义一个首页界面[告诉我们要做什么] 2、定义变量~保存所有小伙伴 3、通过用户输入的选项,执行判断 4、实现各项的功能 5、测试功能运行是否正确 6、BUG完善 """ import os # 保存直播大厅所有伙伴的列表 students = list() while True: # 首页 os.system("cls") print(" 直播大厅") print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") print(" 1、查看所有小伙伴") print(" 2、录入个人信息") print(" 3、查看个人信息") print(" 4、退出系统") print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") # 用户输入选项 c = input("请输入您的选项:") if c == "1": # 遍历所有小伙伴 for stu in students: print("小伙伴:", stu) print("~~~~~~~~~~~~~~~~~~~~~~~~~") input("查看完成按任意键返回首页.") elif c == "2": # 提示用户输入姓名 while True: name = input("请输入昵称:") if name in students: input("该昵称已经存在,请使用其他昵称录入") else: # 保存昵称:列表的末尾追加 students.append(name) input("录入完成,按任意键返回首页...") break elif c == "3": # 提示用户输入要查看的昵称 nickname = input("请输入要查看的昵称:") # 成员成员运算符,判断昵称是否包含在列表中[True/False] if nickname in students: print("该成员已经在大厅中.") else: print("该昵称代表的成员没有在大厅中.") input("查看个人信息,正在升级中...") elif c == "4": input("退出系统,保存好个人数据,按任意键退出") exit(1)
案例二:多用户登录流程[简易版]
""" 多用户登录,简易版 单独一个用户怎么表示?包含账号+密码 用户 = [账号, 密码] user1 = ["admin", "123456"] user2 = ["wenwen", "111111"] 多个用户怎么表示? users = [user1, user2] 1 等价 users = [ ["admin", "123456"], ["wenwen", "111111"] ] 简易版登录怎么实现? 懂 5 看不懂 1 用户输入了:admin, 123456 把输入的数据组装成列表 登录的用户 ["admin", "123456"] 通过成员运算符直接判断 登录的用户 in users [True登录成功/False登录失败] """ import os # 系统中存在两个用户 users = [ ["admin", "123456"], # 第一个用户 ["wenwne", "111111"] # 第二个用户 ] while True: # 用户登录 os.system("cls") print(" ~用户登录") username = input("请输入账号:") password = input("请输入密码:") # 将用户输入的数据组装成列表 u = [username, password] # 使用成员运算符进行了判断 if u in users: input("登录成功,按任意键进入首页") print(" 直播大厅-首页界面") input("首页功能正在升级中,按任意键继续...") else: input("登录失败,按任意键重新登录")
案例三:多用户登录流程[升级版]
""" 案例操作:多用户登录 单个用户?账号+密码+昵称 用户 = [账号, 密码, 昵称] user1 = ["admin", "123", "管理员"] user2 = ["wenwenc9", "111", "稳稳c9"] 多个用户? users = [user1, user2] 等价于 users = [ ["admin", "123", "管理员"], ["wenwenc9", "111", "稳稳c9"]] 用户登录: 用户输入:账号 + 密码 此时,~不能使用成员运算符了!【问题的重点】 ["admin", "123"] in users False[缺少昵称] 这时候,我们就必须得遍历整个列表users~判断账号+密码是否正确 """ import os # 系统中的所有用户 users = [ ["admin", "123", "管理员"], ["wenwenc9", "111", "wenwne"] ] # 定义变量~判断用户登录成功(True)或者失败(False) # 程序刚开始运行的时候,没有用户登录,所以默认False ok = False # 登录后的昵称: 没有用户登录的时候~ 没有昵称 n = "" while True: # 多用户登录 username = input("请输入账号:") password = input("请输入密码:") # 判断登录是否成功:遍历所有用户 for u in users: # 第一次循环:u -> ["admin", "123", "大牧"] if username == u[0] and password == u[1]: input("登录成功,按任意键继续") ok = True # 登录成功 n = u[2] # 记录昵称 break # [所有数据全部遍历完了]~没有发现正确的账号+密码,登录失败 else: input("账号或者密码有误,请重新登录") ok = False # ok的目的:根据用户登录是否成功,判断要不要展示首页 if ok == True: # 用户登录了,展示首页 print(" 欢迎进入游戏首页界面") print("尊敬的用户", n, ",欢迎进入xx游戏") input(" 首页功能正在升级中,按任意键继续")
案例四:用户注册+登录
""" 用户注册+用户登录简易版 原有的简易版用户登录 增加一个功能:用户注册 """ import os # 系统中存在两个用户 users = [ ["admin", "123456"], # 第一个用户 ["wenwenc9", "111111"] # 第二个用户 ] while True: # 登录菜单 os.system("cls") print("■"*20) print(" 1、用户登录") print(" 2、用户注册") print(" 3、退出系统") print("■"*20) #用户输入选项 c = input("请输入您的选项:") if c == "1": # 用户登录:直接使用demo06中的登录代码 # 复制粘贴代码时,一定要注意缩进的问题~自己找不出错误:老师 while True: # 用户登录 os.system("cls") print("用户登录") username = input("请输入账号:") password = input("请输入密码:") # 将用户输入的数据组装成列表 u = [username, password] # 使用成员运算符进行了判断 if u in users: input("登录成功,按任意键进入首页") print("中公直播大厅-首页界面") input("首页功能正在升级中,按任意键返回登录界面...") break else: input("登录失败,按任意键重新登录") break ##################################### elif c == "2": # 简易版用户注册 # 提示用户输入账号,输入密码 username = input("请输入注册账号:") password = input("请输入注册密码:") # 将用户输入的数据,组装成一个列表 user = [username, password] # 将用户数据,添加到系统用户中:末尾追加一个新用户 users.append(user) input("注册成功,按任意键返回登录菜单") elif c == "3": input("系统将退出,保存好个人数据,按任意键结束") exit(1) else: input("没有这个选项,按任意键继续.")
1、什么是元组
元组也是组合数据类型的1种,可以有顺序的存放可以重复的,可以使不同数据类型的多个数据,数据一旦存放到元组中,不可以改动
2、元组的声明
Pyhton 中通过tuple表示元组
(1) 声明空元组
声明空元组没有任何意义,下面的语法只会在找工作中笔试题中出现
t = tuple() #声明一个元组[空] - 推荐 t2 = () #声明了一个元组[空] -很容易和四则运算的小括号混淆 |
(2) 声明一个元素的元组
声明一个元素的元素,没有意义,一般情况下载笔试题中出现
t = tuple([“a”]) # 这是包含一个数据的元素,不推荐的语法~类型转换 t2 = (“a”,) #声明了只包含一个元素的元组~一定要那个逗号 t3 = (“a”) #这不是元组,括号~就是四则运算的括号等价于 t3=“a” |
(3) 声明多个元素的元组
t = (“春”、“夏”、“秋”、“冬”) # 声明有一个包含四个元素的元组,推荐 t = tuple([“春”、“夏”、“秋”、“冬”]) #不推荐,繁琐 |
3、元组的操作
声明的元组中已经包含了多个数据,我们需要对数据进行处理,思考元组中都提供了那些操作方法?依赖 python
提供的交互模式:dir() 和 help() 查看操作方式
操作 | 描述 | 案例 |
---|---|---|
T.count() | 查询一个元素出现的次数 | t.count(“春”) |
T.index() | 查询一个元素出现的位置 | t.index(“秋”) |
T[编号] | 查询指定位置的元素 | t[2] # 结果 :秋 |
len(T) | 查询元组中的元素的个数 |
4、使用场景
由于元组中的数据不能改动,给项目中的一些长时间不需要改动的数据提供了方便:用户的角色[游客、普通会员、VIP会员、管理员]
1、集合的特点
集合 set 是组合数据类型中的一种,集合中可以存放没有顺序的、不可重复、可以是不同数据类型的多个数据
2、集合的声明
在python中通过set 表示集合
(1) 声明空集合
s1 = set() #声明了一个空集合! s2 = {} # 集合没有这样的声明方式·直接这样写声明了一个字典 |
(2) 声明非空集合
s1 = {“A”,“b”,“C”,“d”} # 推荐的非空集合声明方式 s2 = set{[“A”,“b”,“C”,“d”]} #另外一种声明方式 繁琐 列表做了类型转换 得到一个集合 |
3、集合的操作
dir(set)
['add’增加,
'clear’清空集合,
'copy’复制一个集合,
‘pop’, 随机删除一个集合中的数据[集合中的数据没有顺序]
‘remove’, 删除一个指定的数据,如果数据不存在就会报错
‘discard’, 删除一个指定的数据,如果数据不存在什么都不做
‘isdisjoint’,
‘issubset’, s1 集合中的数据是不是包含在 s2 集合中,等价于 s1 < s2
‘issuperset’, s1 集合是不是包含了 s2 集合中你的数据,等价于 s1 > s2
‘difference’, 获取 s1 集合和 s2 集合的差集
‘difference_update’, 获取 s1 和 s2 的差集并将结果数据更新到 s1 中
‘intersection’, 获取 s1 集合和 s2 集合的交集
‘intersection_update’, 获取 s1 和 s2 的交集并将结果更新到 s1 中
‘symmetric_difference’, 获取 s1 和 s2 共同的差集
‘symmetric_difference_update’, 获取共同的差集并更新到 s1 中
‘union’, 获取 s1 和 s2 的并集
‘update’ 获取 s1 和 s2 的并集,并将数据更新给 s1
]
笔试题~经常出现集合的操作
(1) 单个集合的操作
s = set()
s.add(“稳稳”) #增加一个数据
s.clear() #清空数据
s2 = s.copy() #复制s集合
s.pop() 随机删除一个数据
s.remove(“x”), #删除一个指定的数据,如果数据不存在就会报错
s.discard(“x”) #删除一个指定的数据,如果数据不存在什么都不做
(2) 两个集合的操作
① 声明两个集合
其他的交集、并集、共同的差集操作方式类似:
4、适用场景
集合主要用在项目中右剔除重复要求的业务流程中,账号,昵称,身份号码
注意:集合在笔试题中经常出现[一套笔试题~1到 2道集合的操作题]
1、字典的特点
字典是项目开发过程使用平率最高的一个组合数据类型,可以存放键值对{“键”:“值”},其中key不可以重复,value可以重复,存放的数据没有顺序。
2、字典的声明
python 中使用dict表示字典,可以存放 key:value 键值对数据。
(1) 声明空字典 |
---|
d1 = {} #声明了一个空字典~可读性差 不推荐 |
d2 = dict() #声明了一个空字典:推荐 可读性最好 |
(2) 声明非空字典 |
---|
user = {“username”:“admin”,“passowrd”:“123456”} #推荐 |
user2 = dict([(“username”,“admin”),(“password”,“123456”)]) #不推荐繁琐 数据转换 |
3、字典的使用
python中使用dict 表示字典,字典中存放的是没有顺序的键值对,其中key不可以重复,value可以重复 |
---|
(1)查询获取数据 |
---|
D.items()获取所有的键值对 key:value D.keys()获取所有的 key 数据 D.values()获取所有的 value 数据 D.get(k) 获取 k 对应的 value 数据 等价于 D[k] |
(2)删除数据 |
---|
D.pop(k) 删除 k 对应的键值对,等价于 del D[k] D.popitem() 随机删除一个键值对 |
(3)修改数据 |
---|
D.setdefault(k, v) 如果 k 不存在,增加 K:v 到字典中,如果 k 存在什么都不做 D.update(k, v) 如果 k 不存在,增加 k:v 到字典中,如果 k 存在更新对应的 v 等价于D[k] = v |
(4)增加数据数据 |
---|
D.setdefault(key, value) 只有 key 在字典中不存在的情况下,新增一个键值对数据 D.update({key:value}) 只有 key 在字典中不存在的情况下,新增一个/多个键值对数据 D[key] = value 只有 key 在字典中不存在的情况下,新增一个键值对数据 |
4、适用场景
返回文章顶部
通过案例说明:
""" 字典案例操作 用户登录 """ # 定义保存用户的字典 ''' 类似生活中,一个人的字符串姓名就是key,这个人本身就是value 一堆人 = { "稳稳": {"账号": "稳稳", "密码": "123456"}, # 一个用户 "老刘": {"账号": "老刘", "密码": "111111"} } ''' users = { "wenwen": {"username": "wenwen", "password": "123456"}, "laoliu": {"username": "laoliu", "password": "111111"} } # 用户登录 while True: # 提示用户输入信息 username = input("请输入账号:") password = input("请输入密码:") # 判断账号是否存在 ''' "wenwen" in users : "wenwen"字符串,在users字典的key中是否存在?存在True/不存在False 成员运算符,判断一个数据是否包含在一个字典的key中。 ''' if username in users: # 用户存在,根据key获取对应的用户 # users.get("wenwen") 得到 {"username": "wenwen", "password": "123456"} user = users.get(username) # username: "wenwen" | "laoliu" | "xxx" # 判断用户输入的密码是否相等 user={"username": "xxxx", "password": "xxxx"} if password == user.get("password"): # 123456 input("输入正确,登录成功!") else: input("密码错误,按任意键返回") else: input("用户账号不存在. 按任意键返回")
列表,元组,字典,集合的比较
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。