应用: 变量交换的本质就是创建元组:x, y = (y, x ) 格式化字符串的本质就是创建元祖:“姓名:%s, 年龄:%d” % (“tarena”, 15)
4. 小结
字符串:存储字符编码,不可变序列
列表:存储变量,可变序列
元组:存储变量,不可变序列
不可变:按需分配
可变:预留空间
四、字典 dict
1. 定义
由一系列键值对组成的可变散列容器。
散列:对键进行哈希运算,确定在内存中的存储位置,每条数据存储无先后顺序。
键必须唯一且不可变(字符串/数字/元组),值没有限制。
2. 基础操作
2.1 创建字典
字典名 = {键1:值1,键2:值2}
字典名 = dict (可迭代对象)
2.2 添加/修改元素
语法:
字典名[键] = 数据
说明:
键不存在,创建记录。
键存在,修改值。
2.3 获取元素
变量 = 字典名[键] # 没有键则错误
2.4 遍历字典
for 键名 in 字典名:
字典名[键名]
for 键名,值名 in 字典名.items():
语句
2.5 删除元素
del 字典名[键]
"""
字典dict
"""# 1. 创建
dict01 ={}
dict02 =dict()
dict01 ={101:"a",102:"b",103:"c"}
dict02 =dict([(101,"a"),(102,"b")])# 2. 添加
dict01[104]="d"# 3. 修改
dict01[104]="e"# 4. 查找# keyprint(dict01[102])if106in dict01:print(dict01[106])# 循环for key in dict01:print(key)for value in dict01.values():print(value)for item in dict01.items():print(item)for k,v in dict01.items():print(k)print(v)
# 在控制台中录入商品信息(名称与单价),# 如果名称录入为空,则停止录入。# 最后打印所有商品信息(一行一个)。# 如果录入了游戏机,则打印其价格。
dict_commodity ={}whileTrue:
name =input("请输入商品名称:")if name =="":break
price =int(input("请输入单价:"))
dict_commodity[name]= price
for k, v in dict_commodity.items():print("%s商品的价格是%d"%(k, v))if"游戏机"in dict_commodity:print(dict_commodity["游戏机"])
3. 小结
字符串:存储字符编码,不可变序列
列表:存储变量,可变序列
元组:存储变量,不可变序列
字典:存储键值对,可变散列
"""
计算字符串中每个字符出现次数。
输入:abcbdeacb
输出:
字符a,2次
字符b,3次
字符c,2次
字符d,1次
字符e,1次
"""
str_target ="abcbdeacb"
dict_result ={}for item in str_target:if item notin dict_result:
dict_result[item]=1else:
dict_result[item]+=1for k, v in dict_result.items():print("字符%s,%d次"%(k, v))
"""
在控制台中循环录入学生信息(名称、性别、年龄、成绩),如果名称录入为空,则停止录入。
最后打印所有学生信息(一行一个)。
数据结构:
[
{"name":"悟空","sex":"男","age":23,"score":100}
]
"""
list_persons =[]whileTrue:
name =input("请输入学生姓名:")if name =="":break
sex =input("请输入学生性别:")
age =int(input("请输入学生年龄:"))
score =int(input("请输入学生成绩:"))
dict_person ={"name":name,"sex":sex,"age":age,"score":score}
list_persons.append(dict_person)for item in list_persons:print("我叫%s性别是%s今年%d岁啦考了%d分"%(item["name"],item["sex"],item["age"],item["score"]))
"""
在控制台中循环录入多个人的多个喜好,如果名称录入为空,则停止录入。
最后打印所有信息。
数据结构:
{
"于谦":["抽烟","喝酒","烫头"]
}
"""
dict_persons ={}whileTrue:
name =input("请输入姓名:")if name =="":break
dict_persons[name]=[]whileTrue:
hobby =input("请输入喜好:")if hobby =="":break
dict_persons[name].append(hobby)for k,v_list_hobby in dict_persons.items():print(k+"喜欢:")for item in v_list_hobby:print(item)
4. 字典推导式
定义: 使用简易方法,将可迭代对象转换为字典。
语法: {键:值 for 变量 in 可迭代对象} {键:值 for 变量 in 可迭代对象 if 条件}
语法: {表达式 for 变量 in 可迭代对象} {表达式 for 变量 in 可迭代对象 if 条件}
六、for for 嵌套
"""
for for 嵌套
"""# 外层循环控制行for r inrange(3):#012# 内层循环控制列for c inrange(5):# 01234print("*", end=" ")print()
"""
使用for循环绘制下列图形:
*****
#####
*****
#####
"""for r inrange(4):#0 1 2 3for c inrange(5):if r %2==0:print("*",end=" ")else:print("#",end=" ")print()
"""
自定义排序算法,对列表进行升序排列。
思路:
依次取出元素,与后面进行比较。
发现更小的,则交换。
输入:[2,8,6,1]
输出:[1,2,6,8]
"""
list01 =[2,8,6,1]for r inrange(len(list01)-1):for c inrange(r +1,len(list01)):if list01[r]> list01[c]:
list01[r], list01[c]= list01[c], list01[r]print(list01)"""
# list01[0] --> list01[1] list01[2] list01[3]
for c in range(1,4):
# list01[0] list01[c]
pass
# list01[1] --> list01[2] list01[3]
for c in range(2,4):
# list01[1] list01[c]
pass
# list01[2] --> list01[3]
for c in range(3,4):
# list01[2] list01[c]
pass
"""
"""
打印二维列表第四行第三列元素。
从左到右打印二维列表第二行所有元素。
从上到下打印二维列表第一列所有元素。
将二维列表按照表格状输出到终端。
"""
list01 =[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],]print(list01[3][2])for item in list01[1]:print(item)# list01[0][0]# list01[1][0]# list01[2][0]# list01[3][0]for r inrange(4):print(list01[r][0])for line in list01:for item in line:print(item,end ="\t")print()
"""
方阵转置
"""
list01 =[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],]"""
for r in range(1,4):
# list01[r][0] list01[0][r]
pass
# list01[1][0] list01[0][1]
# list01[2][0] list01[0][2]
# list01[3][0] list01[0][3]
for r in range(2,4):
# list01[r][1] list01[1][r]
pass
# list01[2][1] list01[1][2]
# list01[3][1] list01[1][3]
for r in range(3,4):
# list01[r][2] list01[2][r]
pass
# list01[3][2] list01[2][3]
"""for c inrange(len(list01)-1):for r inrange(c+1,len(list01)):
list01[r][c],list01[c][r]= list01[c][r],list01[r][c]print(list01)
"""
列表推导式嵌套
"""
list01 =["香蕉","苹果","哈密瓜"]
list02 =["咖啡","牛奶","雪碧","可乐"]# list03 = []# for r in list01:# for c in list02:# list03.append(r +c)
list03 =[r + c for r in list01 for c in list02]print(list03)