小言_互联网的博客

python精选09集(回 顾总结、字典组合巩固)

477人阅读  评论(0)

一、知识回顾

1、数字型与非数字型

  • Python 中数据类型可以分为 数字型非数字型

  • 数字型

    • 整型 (int)
    • 浮点型(float
    • 布尔型(bool
      • True 非 0 数 —— 非零即真
      • False 0
    • 复数型 (complex)
      • 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
  • 非数字型

    • 字符串
    • 列表
    • 元组
    • 字典
  • Python 中,所有 非数字型变量 都支持以下特点:

    1. 都是一个 序列 sequence,也可以理解为 容器
    2. 取值 []
    3. 遍历 for in
    4. 计算长度最大/最小值比较删除
    5. 链接 +重复 *
    6. 切片

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):
        变量存储的是容器中数据的索引
        容器名称[变量]容器中记录的数据地址
    • 序列:有序排列,内存连续.
      • 使用索引、切片 --> 获取数据灵活
    • 散列:无序排列,内存分散
      • 使用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],
]
# 打印出161116数字
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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场