一、知识回顾
1、数字型与非数字型
-
Python 中数据类型可以分为 数字型 和 非数字型
-
数字型
- 整型 (
int
) - 浮点型(
float
) - 布尔型(
bool
)- 真
True
非 0 数
—— 非零即真 - 假
False
0
- 真
- 复数型 (
complex
)- 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
- 整型 (
-
非数字型
- 字符串
- 列表
- 元组
- 字典
-
在
Python
中,所有 非数字型变量 都支持以下特点:- 都是一个 序列
sequence
,也可以理解为 容器 - 取值
[]
- 遍历
for in
- 计算长度、最大/最小值、比较、删除
- 链接
+
和 重复*
- 切片
- 都是一个 序列
2、可变与不可变类型
-
不可变类型,内存中的数据不允许被修改:
- 数字类型
int
,bool
,float
,complex
,long(2.x)
- 字符串
str
- 元组
tuple
- 数字类型
-
可变类型,内存中的数据可以被修改:
- 列表
list
- 字典
dict
- 列表
- 从容器的角度理解
字符串(str):" " | 储存字符编码 | 不可变 | 序列 |
---|---|---|---|
列表(list): [ ] | 储存变量 | 可变 | 序列 |
元组(tuple): ( ) | 储存变量 | 不可变 | 序列 |
字典(key : value) | 储存键值对 | 可变 | 散列 |
集合(set) | 储存键 | 可变 | 散列 |
-
可变(容器有预留的空间):
- 增加:append、insert
- 删除:remove、del
- 索引:
- 容器名称[整数]
- 容器名称[起点:终点:间隔]- 不可变(容器按需分配,创建时直接定义空间)
- 循环
- for 变量 in 容器名称:
变量存储的是容器中记录的数据地址 - for 变量 in range(len(容器名称)-1,-1,-1):
变量存储的是容器中数据的索引
容器名称[变量]容器中记录的数据地址
- for 变量 in 容器名称:
- 序列:有序排列,内存连续.
- 使用索引、切片 --> 获取数据灵活
- 散列:无序排列,内存分散
- 使用key查找 --> 获取数据最快
- 去除重复元素
-
容器间相互转换:
- list()
- tuple()
- dict()
- set()
-
容器的组合
- 列表:存储单一维度的数据【能灵活定位某个元素】
- 字典:存储多个维度的数据【能快速定位某个元素】
二、综合练习
1、列表与字典组合
需求案例
- athlete=[‘马龙’,‘科比’,‘刘翔’,‘李娜’]
- hobby=[‘乒乓球’,‘篮球’,‘跑步’,‘网球’]
- 将以上列表合并为一个字典【利用推导式】
- 将以上键值对颠倒
athlete=['马龙','科比','刘翔','李娜']
hobby=['乒乓球','篮球','跑步','网球']
info = {athlete[i]:hobby[i] for i in range(len(athlete))}
print(info)
info = {value:key for key,value in info.items()}
print(info)
2、双层for循环使用
案例需求
- 通过for两层循环打印以下图形
、
for r in range(5): # 外层循环行
for c in range(6): # 内层循环列
if r % 2: # 奇数循环 -
print("-", end=" ")
else: # 双数循环 *
print("*", end=" ")
print()
3、二维列表
案例需求
- 定义 二维列表
two_dim = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16],
] - 打印出1、6、11、16数字
- 循环打印首行数据,一行一个1,2,3,4
- 循环打印末行数据,一行一个13,14,15,16
- 循环打印首列数据:结果为1,5,9,13
- 循环倒序(右→左)打印第二行数据8,7,6,5
- 循环倒序(下→上)打印第三列数据15,11,7,3
two_dim = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16],
]
# 打印出1、6、11、16数字
print(two_dim[0][0])
print(two_dim[1][1])
print(two_dim[2][2])
print(two_dim[3][3])
# 循环打印首行数据,一行一个:结果为1,2,3,4
for item in two_dim[0]:
print(item)
# 循环打印末行数据,一行一个:结果为13,14,15,16
for item in two_dim[3]:
print(item)
# 循环打印首列数据:结果为1,5,9,13
for column in range(len(two_dim)):
print(two_dim[column][0])
# 循环倒序(右→左)打印第二行数据:结果为8,7,6,5
for row in range(len(two_dim[1])-1,-1,-1):
print(two_dim[1][row])
# 循环倒序(下→上)打印第三列数据:结果为15,11,7,3
for column in range(len(two_dim[2])-1,-1,-1):
print(two_dim[column][2])
三、列表数组组合
1、字典嵌套使用
案例演示
hero ={
"后裔":{
"技能":["惩戒射击","多重箭矢","落日余晖","灼日之矢"],
"冷却值":["0","10","5","45"],
"消耗":["0","60","60","130"],
},
"安其拉":{
"技能":["咒术火焰","火球术","混沌火种","炙热光辉"],
"冷却值":["0","6","8","20"],
"消耗":["0","50","60","100"],
}
}
# 打印后裔技能
for skill in hero["后裔"]["技能"]:
print(skill)
# 打印安其拉冷却值
for cool in hero["安其拉"]["冷却值"]:
print(cool)
# 打印所有英雄
for roles in hero.keys():
print(roles)
# 打印所有人物的消耗属性值
for roles in hero.keys():
for value in hero[roles]["消耗"]:
print(value)
# 在后裔技能里添加“闪现”
hero["后裔"]["技能"].append("闪现")
print(hero["后裔"]["技能"])
2、字典巩固
练习1
- 统计一串字符中每个字符出现的次数
- info = “wqrqdqwewqrrqweqeqwefds”
dict_letter = {}
info = "wqrqdqwewqrrqweqeqwefds"
for item in info:
if item in dict_letter:
dict_letter[item] +=1
else:
dict_letter[item] = 1
for k,v in dict_letter.items():
print("%s出现的次数是%d"%(k,v))
练习2
- 录入商品信息(名称,单价)
- 若输入为空则结束操作,并打印所有商品信息,
例如:xxx的价格是yyy.
dict_shop = {}
while True:
name = input("请输入商品名称:")
if name == "":
break
price = float(input("请输入商品单价:"))
dict_shop[name] = price
for k, v in dict_shop.items():
print("%s的价格是%f." % (k, v))
练习3
- 列表内嵌字典
- 输入学生信息【名称,年龄,性别,成绩】
如果名称为空,退出并输出打印.
– 打印所有学生信息(一行一个),并输出最后一个学生的信息
例如:xxx的年龄是xxx,性别是xxx,成绩是xxx.- 数据结构如下:
[
{“name”:“小明”, “age”:20,“sex”:“男”,“score”:85},
{“name”:“小王”, “age”:22,“sex”:“女”,“score”:95},
{“name”:“小李”, “age”:23,“sex”:“男”,“score”:90},
]
- 数据结构如下:
list_stu = []
while True:
name = input("请输入学生姓名:")
if name == "":
break
age = int(input("请输入学生年龄(整数):"))
sex = input("请输入学生性别:")
score = float(input("请输入学生成绩(数字):"))
dict_stu = {"name":name, "age":age,"sex":sex,"score":score}
list_stu.append(dict_stu)
for student in list_stu:
print("%s的年龄是%d,性别是%s,成绩是%.2f" % (student["name"], student["age"],student["sex"],student["score"]))
# 最后一个学生信息
student = list_stu[-1]
print("%s的年龄是%d,性别是%s,成绩是%.2f" % (student["name"], student["age"], student["sex"], student["score"]))
转载:https://blog.csdn.net/weixin_38640052/article/details/105998833
查看评论