4.25 学习笔记+作业

本文深入探讨Python中的列表、元组、字典和集合等数据结构的特性与操作方法,包括切片、遍历、增加、删除等核心功能,以及集合的交集、并集和差集运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表

1、切片、相加、相乘、遍历
#切片
a=[1,2,3,4,5]
b=a[2:4]
print(b)
#相加相乘、遍历
a=[1,2,3]
b=[4,5,6]
c=a+b
d=a*3
print©
print(d)
for i in a:
print(i)


a=[1,2,3,4,5]
b,*c=a
print(b,c)

#append、extend、insert
a=[1,2,3,4]
a.append(5)
print(a)

b=[6,7,8,9]
a.extend(b)#列表a发生了改变
print(a)

a.insert(3,10)#insert是将值插入到指定的数字的后面
print(a)

#pop remove del
a=[1,2,3,4,5,6]
b=a.pop()
print(b)
print(a)
b=a.pop(-2)
print(b)
print(a)

a=[1,2,3,4,3,5,6]
a.remove(3)#移除第一个遇到的指定的数字
print(a)

del (a)# 将列表全部删除

#修改列表数据 reverse sort的使用
a=[1,2,“a”,“b”]
a[2]=3
print(a)
a.reverse()
print(a)
a=[“1”,“c”,“r”,“d”]
a.sort()#将元素按照ASCII表顺序排序
print(a)

#count index
a=[1,2,2,3,4,2,4,5,6]
b=a.count(2)
print(b)
c=a.index(2) #查找所要查找的元素的第一个下标,如所查找元素不在列表中则报错
print©

#嵌套列表遍历及列表地址问题
a=[[1,2,3],[4,5,6],[7,8,9]]
for i in a :
for j in i :
print(j,end=" ")
print()
a=[1,2,3]
b=a
a.append(4)
print(b)
#b在这里改变是因为a虽然增加了数字4,但它知识修改,地址是没有变的b=a,说明了b的地址与a一样,所以b也要随之改变

#深浅拷贝
import copy
a=[1,2,3,[4,5,6]]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(b)
print©
print(d)
print("-------------------------------")
a.append(7)
print(b)
print©
print(d)
#当在a的外层添加一个数时,不管是深拷贝还是浅拷贝都是没有变化的
print("-------------------------------")
a[3].append(7)
print(b)
print©
print(d)
#当在a的更深层次改变时,浅拷贝发生变化,二深拷贝不会发生变化,这就说明深拷贝是完完全全的拷贝,不管所复制的列表怎么变化它都不会发生变化

元组

#切片 重复 相加
a=(1,2,3,4,5)
b=(6,7,8,9)
c=a[1:4]
print©
d=a+b
print(d)
e=a*3
print(e)
#嵌套元组的遍历
a=((1,2,3),(4,5,6))
for i in a :
for j in i :
print(j,end=" ")
print()
print(a[1][2])
print(a[0][1])

z=((1,2,3),(4,5,6))
for a,b,c in z:
print(a,b,c)

#多变量赋值
a=(1,2)
b,c=a
print(b,c)

a=(1,2,3,4,5)
x,*y=a
print(x,y)

#元组是不可被修改的,但如果其中有能被修改的,如列表,修改是列表本身,元组并不算被修改
a=(1,2,3,[4,5,6])
a[3].append(7)
print(a)

#小括号中若只有数字,没有逗号,则被认为是整型,若有逗号则认为是元组
a=(1)
print(a,type(a))
a=(1,)
print(a,type(a))

#强制类型转换
a=“hello”
b=list(a)
print(b)
c=tuple(a)
print©

#元组index count
a=(1,4,2,3,4,5)
c=a.index(4)#找到所要查找的元素第一次出现的下标,若所找元素没有在元祖中则报错
print©
b=a.count(4)#统计所查找的元素的个数
print(b)

#枚举
a=(1,2,3,“a,”,“c”,“e”)
for x ,y in enumerate(a):#x代表下标,y代表对应下标的数
print(x,y)
print()
b=“qwerty”
for x,y in enumerate(b):
print(x,y)

#求元组中奇数偶数的个数、求最大值最小值及它们的下标
a=(1,2,3,4,5,6)
js=0
os=0
for i in a :
if i%2==0:
os+=1
else:
js+=1
print(“奇数:”,js,“偶数:”,os)

a=(1,2,3,4,5,6)
max=min=a[0]
max_xb=min_xb=0
for i in range(len(a)):
if a[i]>max:
max=a[i]
max_xb=i
elif a[i]<min:
min=a[i]
min_xb=i
print(“最大值:”,max,“下标:”,max_xb)
print(“最小值:”,min,“下标:”,min_xb)

字典

#字典的key,只能使用不可被修改的类型,列表就不能做key,而value可以使用任何数据类型

#字典的增加、修改
a={“name”:“张三”,“age”:18,“sex”:“男”}
a[“id”]=1001#增加
print(a)
a[“name”]=“李四”#修改
print(a)

删除操作 pop popitem clear

a={“name”:“张三”,“age”:18,“sex”:“男”}
a.pop(“sex”)#括号里要指定删除的key
print(a)
a={“name”:“张三”,“age”:18,“sex”:“男”,“address”:“广州”}
a.popitem()#一般默认删除最后一个k-v
print(a)

a={“name”:“张三”,“age”:18,“sex”:“男”,“address”:“广州”}
a.clear()#将字典全部清空
print(a)

#update
a={“name”:“张三”,“age”:18,“sex”:“男”}
b={“a”:2,3:5}
a.update(b)#将b添加到a后面
print(a)
print(b)

#key-value
a={“name”:“张三”,“age”:18,“sex”:“男”}
for k in a.keys():
print(k)
for v in a.values():
print(v)

for k,v in a.items():
print(k,v)

#将字典中几个人的个人信息按行输出成k-v形式
a={“001”:{“name”:“张三”,‘age’:18,“sex”:“男”},
“002”: {“name”: “张三”, ‘age’: 38, “sex”: “男”},
“003”: {“name”: “张三”, ‘age’: 48, “sex”: “男”},
“004”: {“name”: “张三”, ‘age’: 28, “sex”: “男”},
}
for k in a.keys():
print(“学号:”,k,end=" “)
for x,y in a[k].items():
print(x,y,end=” ")
print()

#get
a={“name”:“张三”,“age”:18,“sex”:“男”}
b=a.get(“address”,“广州”)#当字典中没有address这个key,后面的广州就是默认值
print(b)
c=a.get(“name”,“呵呵”)#当字典里有name这个key,并且有相应的值是,呵呵就不要了,用字典里对应的值
print©

# if-in 、if-not in 表示判断
a={“name”:“张三”,“age”:18,“sex”:“男”}
if "name"in a :
print(“name在a里面”)
if “address” not in a :
print(“address不在a里面”)

#创建字典
a=dict(name=“张三”,age=18,sex=“男”)
print(a,type(a))

集合

#集合具有无序性、唯一性等特点,它的pop、remove用法与列表元组一样,但注意的是pop是随机删除
#交集、并集、差集
b={5,2,3}
a={1,2,3}
c=a&b#交集
c1=a.intersection(b)
print(c,c1)
d=a|b#并集
d1=a.union(b)
print(d,d1)
e=a-b#a 中b没有的
e1=a.difference(b)
print(e,e1)
f=a.symmetric_difference(b)#将两个集合中不同的组合到一起
print(f)

#超集、子集
a={1,2,3,4,5,6,7}
b={5,1,4,2,3,6}
print(a>b)
print(a.issuperset(b))
print(b<a)
print(b.issubset(a))

作业

1、售货机
fList=[“奥利奥”,“薯片”,“可乐”]
for index,food in enumerate(fList,start=1):
sp=“食物序号:{},名称:{}”.format(index,food)
print(sp)
while True:
sr = input(“请输入要买商品的序号【输入q/Q退出程序】:”)
if sr==“Q"or"q”:
print(“程序结束”)
break
elif sr!=“Q"or"q”:
num = int(sr)
if num >0 and num<=len(fList):
print(fList[num-1])
else:
print(“输入序号有错,请重试”)
else:
print(“输入的内容错误,请重试”)

2、点歌系统
while True:
print(“欢迎进入点歌系统”)
print(“通过地区选歌请输入1,通过歌手点歌请输入2”)
a=input(“请选择点歌方式:”)
if a==“1”:
print(“香港请选1”)
print(“大陆请选2”)
quku ={‘1’:{“邓紫棋”:{“泡沫”,“光年之外”},“陈小春”:{“算你狠”,“你好毒”}},
‘2’: {“吴亦凡”: {“大碗宽面”, “乖乖”}, “许嵩”: {“清明雨上”, “天使”}}
}
diqu=input(“请选择地区:”)
if diqu !=“1"and diqu!=“2”:
print(“输入有误,请重试”)
continue
for i in list(quku[diqu].keys()):
print(i,end=”")
print()
songer=input(“请输入歌手姓名:”)
if songer not in list(quku[diqu].keys()):
print(“输入有误,请重试”)
continue
print(“根据您的输入找到以下歌曲:”)
for j in list(quku[diqu].get(songer)):
print(j,end="")
print()
song_name=input(“输入您喜欢的歌名”)
print(“准备播放”)
break
elif a==“2”:
quku = {‘1’: {“邓紫棋”: {“泡沫”, “光年之外”}, “陈小春”: {“算你狠”, “你好毒”}},
‘2’: {“吴亦凡”: {“大碗宽面”, “乖乖”}, “许嵩”: {“清明雨上”, “天使”}}
}
print(“歌手有:”)
for i in list (quku.keys()):
print(i,end="")
print()
songer =input(“请输入你要寻找的歌手:”)
if songer not in list(quku.keys()):
print(“输入有误,请重试”)
continue
print(“根据筛选所找到的”)
for j in list(quku.get(songer)):
print(j,end="")
print()
song_name=input(“请输入你喜欢的歌”)
print(“准备开始”)
break
else:
print(“选择有误,请重试”)
continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值