活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:
**
学习计划
1,学习目标
提示:可以添加学习目标
例如: 一周掌握 Python 入门知识
2,学习内容
提示:可以添加要学的内容
例如:
A,掌握 Python 基本语法
B,掌握 Python 列表、字典、元组等集合类型的用法
C,掌握 Python 函数
D,掌握 Python 常用模块
E, 掌握 Python 模块与包
F,掌握 Python 类与对象
3,学习时间
每天拿出来两个小时
4,学习产出
CSDN技术博客 每天一篇
学习日记
day02 Python的基础语法——列表、字典、元组
1.列表初始
name1 = "张新晓"
name2 = "潘磊"
# 列表的构建 语法格式 [数据对象,...,]
# 特点1: 列表中的元素可以是任意数据类型
# 特点2: 列表中的元素个数没有限制
l1 = [100, "hello", True]
print(type(l1)) # list
l2 = [100, 2, 34, 5]
print(len(l2)) # 4
names = ["", "", "", ]
2.列表的序列操作
l = [10, 20, 30, 40, 50]
# 列表是一个序列类型
# 一 支持正负索引 数据对象[索引]
# print(l[1])
# print(l[-3])
print(id(l))
l[0] = 100
print(l)
print(id(l))
# 二 支持切片: 数据对象[开始索引:结束索引:步长] 顾头不顾尾
# print(l[1:4]) # [20, 30, 40]
# print(l[-4:-1]) # [20, 30, 40]
# print(l[1:]) # [20, 30, 40, 50]
# print(l[:3]) # [20, 30, 40, 50]
# print(l[:]) # [10, 20, 30, 40, 50]
# print(l[-2:-5:-1]) # [40, 30, 20]
# 三 in操作: 某个值是否是列表中的某个元素值
# names = ["rain", "yuan", "alvin"]
# print("rai" in names)
# print("rai" in "rain")
# print(1 in ["1", 2, 3])
# # 案例
# n = 0
# while n < 100:
#
# # if n != 88 and n != 66:
# # print(n)
#
# if n not in [66, 88, 33, 44, 55]:
# print(n)
#
# n += 1
# 拼接 +
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1 + l2) # [1, 2, 3, 4, 5, 6]
print(l1)
print(l2)
3.列表内置方法
# 列表内置方法: 列表对象.方法()
# 列表的内置方法是用来管理列表中的数据:增删改查
# 一 增:append:追加 insert:向任意位置插入值 extend
# print("hello".upper())
# 案例1: append
# l = [10, 20, 30, 40]
# ret = l.append(50)
# print(l) # [10, 20, 30, 40,50]
# print(ret) # None
# 案例2: insert(索引,值)
# l = [10, 20, 30, 40]
# l.insert(0, 100)
# print(l) # [100, 10, 20, 30, 40]
# 案例3: extend
# l1 = [10, 20, 30, [4, 5, 6]]
# 如何获取5的值
# print(l1[3][1])
# print(len(l1))
# l2 = [1, 2, 3]
# l3 = [4, 5, 6]
# l2.append(l3)
# print(l2) # [1,2,3,[4,5,6]]
# print(len(l2))
# print(id(l2))
# ret = l2.extend(l3)
# print("ret:", ret)
# print(l2) # [1, 2, 3, 4, 5, 6]
# print(id(l2))
# 二 删 pop():按索引删除 remove():按值删除 clear():清空
# names = ["张三", "李四", "王五"]
# 按索引删除
# del_name = names.pop(0) # pop返回删除元素值
# print(names)
# print("将%s删除掉了" % del_name)
# 按元素值删除
# ret = names.remove("李四")
# print(ret) # None
# print(names)
# 清空列表
# names.clear()
# print(names) # []
# del names
# print(names)
# 三 改: 没有内置方法修改元素,只能通过索引完成
# l = [1, 2, 3]
# l[0] = 100
# print(l) # [100, 2, 3]
# 四 查 index count sort reverse
# names = ["张三", "李四", "王五", "李四"]
# print(names.index("李四"))
# print(names.count("李四"))
#
# age_list = [20, 22, 18, 45, 32]
# # age_list.reverse() # age_list :[32,45,18,22,20]
#
# age_list.sort(reverse=True)
# print(age_list) # [45, 32, 22, 20, 18]
#
# age_list = ["100", "10", "12"]
# age_list.sort()
# print(age_list) # ['10', '100', '32']
# 练习题
# 将字符串 "20,15,34,188,26"中的所有数字进行从大到小排序按"-"作为分隔符组成新的字符串
# 方案1:
# s = "20,15,34,188,26"
# l1 = s.split(",")
# print(l1) # ['20', '15', '34', '188', '26']
# l2 = []
# for i in l1:
# l2.append(int(i))
#
# print(l2)
# l2.sort(reverse=True)
# print(l2)
# l3 = []
# for i in l2: # l2: [15, 20, 26, 34, 188]
# l3.append(str(i))
# print(l3) # ['15', '20', '26', '34', '188']
#
# print("-".join(l3)) # 15-20-26-34-188
# 方案2
s = "20,15,34,188,26"
l1 = s.split(",") # ['20', '15', '34', '188', '26']
l2 = [int(i) for i in l1]
l2.sort(reverse=True)
l3 = [str(i) for i in l2]
print("-".join(l3)) # 188-34-26-20-15
4.列表的循环和range函数
# 列表内置方法: 列表对象.方法()
# 列表的内置方法是用来管理列表中的数据:增删改查
# 一 增:append:追加 insert:向任意位置插入值 extend
# print("hello".upper())
# 案例1: append
# l = [10, 20, 30, 40]
# ret = l.append(50)
# print(l) # [10, 20, 30, 40,50]
# print(ret) # None
# 案例2: insert(索引,值)
# l = [10, 20, 30, 40]
# l.insert(0, 100)
# print(l) # [100, 10, 20, 30, 40]
# 案例3: extend
# l1 = [10, 20, 30, [4, 5, 6]]
# 如何获取5的值
# print(l1[3][1])
# print(len(l1))
# l2 = [1, 2, 3]
# l3 = [4, 5, 6]
# l2.append(l3)
# print(l2) # [1,2,3,[4,5,6]]
# print(len(l2))
# print(id(l2))
# ret = l2.extend(l3)
# print("ret:", ret)
# print(l2) # [1, 2, 3, 4, 5, 6]
# print(id(l2))
# 二 删 pop():按索引删除 remove():按值删除 clear():清空
# names = ["张三", "李四", "王五"]
# 按索引删除
# del_name = names.pop(0) # pop返回删除元素值
# print(names)
# print("将%s删除掉了" % del_name)
# 按元素值删除
# ret = names.remove("李四")
# print(ret) # None
# print(names)
# 清空列表
# names.clear()
# print(names) # []
# del names
# print(names)
# 三 改: 没有内置方法修改元素,只能通过索引完成
# l = [1, 2, 3]
# l[0] = 100
# print(l) # [100, 2, 3]
# 四 查 index count sort reverse
# names = ["张三", "李四", "王五", "李四"]
# print(names.index("李四"))
# print(names.count("李四"))
#
# age_list = [20, 22, 18, 45, 32]
# # age_list.reverse() # age_list :[32,45,18,22,20]
#
# age_list.sort(reverse=True)
# print(age_list) # [45, 32, 22, 20, 18]
#
# age_list = ["100", "10", "12"]
# age_list.sort()
# print(age_list) # ['10', '100', '32']
# 练习题
# 将字符串 "20,15,34,188,26"中的所有数字进行从大到小排序按"-"作为分隔符组成新的字符串
# 方案1:
# s = "20,15,34,188,26"
# l1 = s.split(",")
# print(l1) # ['20', '15', '34', '188', '26']
# l2 = []
# for i in l1:
# l2.append(int(i))
#
# print(l2)
# l2.sort(reverse=True)
# print(l2)
# l3 = []
# for i in l2: # l2: [15, 20, 26, 34, 188]
# l3.append(str(i))
# print(l3) # ['15', '20', '26', '34', '188']
#
# print("-".join(l3)) # 15-20-26-34-188
# 方案2
s = "20,15,34,188,26"
l1 = s.split(",") # ['20', '15', '34', '188', '26']
l2 = [int(i) for i in l1]
l2.sort(reverse=True)
l3 = [str(i) for i in l2]
print("-".join(l3)) # 188-34-26-20-15
5.列表推导式
# l = [1, 2, 3, 4, 5]
# l2 = []
# for i in l:
# l2.append(i * i)
# print(l2)
# 列表推导式:[表达式 for i in 可迭代对象]
l = [1, 2, 3, 4, 5]
l2 = [i * i for i in l]
print(l2) # [1,4,9,16,25]
6.字典初始
# 字典是python的唯一一个hash映射的数据类型
l = ["rain", 22, "male"]
# 字典中一个键值对是一个元素
# 字典的键必须是不可变数据类型(除了列表和字典数据类型),常用的就是字符串和整型
# 字典的值可以是任意数据类型
# 字典的键值对原则上没有限制
# 字典特点:无序,键不能重复
d = {"name": "rain", "age": 22, "gender": "male"}
print(d, type(d)) # dict
7.字典的基本操作
stu = {"name": "yuan", "age": 22}
# print(len(stu))
# 一 通过键查询值 列表对象[索引] 字典对象[键]
print(stu["name"]) # yuan
print(stu["age"]) # yuan
print(stu["xxx"]) # 键不存在报错
# 二 添加或修改
stu["gender"] = "male" # 键不存在,则是添加键值对
stu["age"] = 24 # 键存在,则修改键值对
print(stu)
# 删除键值对 del命令
del stu["gender"]
print(stu)
8.字典的内置方法
# 字典的内置方法:对字典对象的数据管理
stu = {"name": "yuan", "age": 22, "gender": "female"}
# 一 查看键值对
# print(stu.get("name"))
# print(stu.get("age"))
# print(stu.get("gender", "male"))
# print(stu.keys()) # ['name', 'age']
# print(stu.values()) # ['yuan', 22]
# print(stu.items()) # [('name', 'yuan'), ('age', 22)]
# 二 添加或修改键值对:update
# stu.update({"age":32,"gender":"male"})
# ret = stu.setdefault("gender", "male") # 获取name键的值
# print(ret)
# print(stu)
# 三 删除键值对:pop
# ret = stu.pop("age")
# stu.popitem()
# print("age",ret)
# print("stu",stu)
9. 字典的for循环
stu = {"name": "yuan", "age": 22, "gender": "female"}
# print(stu.get("name"))
# k = "age"
# print(stu.get(k))
# 方式1
# for i in stu:
# print(i, stu.get(i)) # 遍历字典的键
# 方式2
# x = [1, 2, 3]
# print(x, type(x)) # tuple
# a, *b = [1, 2, 3]
# print(a, b)
for k,v in stu.items(): # [("name","yuan")],("age",22),("gender","male)]
print(k,v)
10.元组类型
# 元组称之为只读列表
l = [1, 2, 3]
l[0] = 100
t = (1, 2, 3)
print(t, type(t)) # tuple
print(t[1])
print(t[1:])
print(1 in t)
t.count(1)
t.index(1)
for i in t:
print(i)
11.字典的使用
# 练习1
stu = {"name": "yuan", "score": [100, 90, 80]}
# 获取外语的成绩
l = stu.get("score") # [100, 90, 80]
print(l[-1])
print(stu.get("score")[-1])
# 练习2
stu = {"name": "yuan", "score": {"chinese": 100, "math": 90, "english": 80}}
print(len(stu))
print(stu.get("score").get("english"))
# 练习3
data = [
{"sid":1001,"name": "rain", "age": 22},
{"sid":1003,"name": "eric", "age": 32},
{"sid":1002,"name": "alvin", "age": 24},
]
for stu_dict in data:
name = stu_dict.get("name")
age = stu_dict.get("age")
print("姓名:%s,年龄:%d" % (name, age))
data2 = {
1001: {"name": "rain", "age": 22},
1002: {"name": "eric", "age": 32},
1003: {"name": "alvin", "age": 24},
}
print(data2.get(1001).get("name"))
for stu_id,stu_info in data2.items():
name = stu_info.get("name")
age = stu_info.get("age")
print("学号:%s,姓名:%s,年龄:%d" % (stu_id,name, age))
12. 字典的面试题
# 案例1
# l1 = [1, 2, 3]
# l2 = [4, 5, l1]
# print(l2) # [4, 5, [1, 2, 3]]
# l1[0] = 100
# print(l2)
# 案例2
stu01 = {"name": "rain"}
stus_dict = {1001: stu01}
print(stus_dict)
stu01["name"] = "alvin"
print(stus_dict)
print(id(stus_dict[1001]))
stus_dict[1001] = {"name": "eric"}
print(id(stus_dict[1001]))
print(id(stu01))
13. 作业
# 确定数据以什么数据类型和格式进行存储
students_dict = {
1001: {
"name": "yuan",
"scores": {
"chinese": 100,
"math": 89,
"english": 100,
}
},
1002: {
"name": "rain",
"scores": {
"chinese": 100,
"math": 100,
"english": 100,
}
},
}
while 1:
print('''
1. 查看所有学生成绩
2. 添加一个学生成绩
3. 修改一个学生成绩
4. 删除一个学生成绩
5. 退出程序
''')
choice = input("请输入您的选择:")
if choice == "1":
# 查看所有学生信息
print("*" * 60)
for sid, stu_dic in students_dict.items():
# print(sid,stu_dic)
name = stu_dic.get("name")
chinese = stu_dic.get("scores").get("chinese")
math = stu_dic.get("scores").get("math")
english = stu_dic.get("scores").get("english")
print("学号:%4s 姓名:%4s 语文成绩:%4s 数学成绩%4s 英文成绩:%4s" % (sid, name, chinese, math, english))
print("*" * 60)
elif choice == "2":
while 1:
sid = input("请输入学生学号>>>")
# 判断该学号是否存在
if int(sid) in students_dict: # 该学号已经存在!
print("该学号已经存在!")
else: # # 该学号不存在!
break
name = input("请输入学生姓名>>>")
chinese_score = input("请输入学生语文成绩>>>")
math_score = input("请输入学生数学成绩>>>")
english_score = input("请输入学生英语成绩>>>")
# 构建学生字典
scores_dict = {
"chinese": chinese_score,
"math": math_score,
"english": english_score,
}
stu_dic = {
"name": name,
"scores": scores_dict
}
print("stu_dic", stu_dic)
students_dict[int(sid)] = stu_dic
elif choice == "3":
while 1:
sid = input("请输入学生学号>>>")
# 判断该学号是否存在
if int(sid) in students_dict: # 该学号已经存在!
break
else: # # 该学号不存在!
print("该修改学号不存在!")
chinese_score = input("请输入学生语文成绩>>>")
math_score = input("请输入学生数学成绩>>>")
english_score = input("请输入学生英语成绩>>>")
# 修改学生成绩
scores_dict = {
"chinese": chinese_score,
"math": math_score,
"english": english_score,
}
students_dict.get(int(sid)).update({"scores": scores_dict})
print("修改成功")
elif choice == "4":
while 1:
sid = input("请输入学生学号>>>")
# 判断该学号是否存在
if int(sid) in students_dict: # 该学号已经存在!
break
else: # # 该学号不存在!
print("该修改学号不存在!")
students_dict.pop(int(sid))
print("删除成功")
elif choice == "5":
# 退出程序
break
else:
print("输入有误!")