网站建设与维护书,电子政务网站建设总结,wordpress页面更好看,交易平台网站程序一、字典
1、概念及内存图
列表#xff1a;由一系列变量组成的可变序列容器字典#xff1a;由一系列键值对组成的可变散列容器字典优势#xff1a;利用#xff08;内存#xff09;空间#xff0c;换取#xff08;CPU查找#xff09;时间 键key 必须唯一且为不…一、字典
1、概念及内存图
列表由一系列变量组成的可变序列容器字典由一系列键值对组成的可变散列容器字典优势利用内存空间换取CPU查找时间 键key 必须唯一且为不可变数据字符串数字元组若相同第二个相同的key覆盖第一个通过不可变保证唯一性 值value 没有限制 2、基本操作
(1)创建
# 列表善于存储单一纬度数据 list_name [丽丽,红红,嘿嘿] list_age [20, 54, 56] list_sex [女, 男, 女]
# 字典善于存储多个维度数据# 创建方法1字典名 {键1值1键2值2} dict_ll {name:丽丽, age:20, sex:女}
dict_hh {name:红红, age:54, sex:男}
dict_hs {name:嘿嘿, age:56, sex:女} 创建方法2字典名 dict (容器)
# 需要保质容器的每个元素必须能一分为二 list_name [丽丽,红红,嘿嘿] print(dict(list_name)) 2添加
添加,其实就是修改如果key在就是修改如果key不在就是添加
添加方法字典名[键] 值 dict_ll {name:丽丽, age:20, sex:女} dict_ll[money] 10000 # 定位快修改 dict_ll[age] 26 # 读取先判断再读取 print(dict_ll[age]) 注意dict中根据key找value直接定位 字典名[键] 根据value找key则需要一一遍历
3删除
del 字典名[键1],字典名[键2] 删除后键值对同步消失
4遍历 dict_ll {name:丽丽, age:20, sex:女}
# 所有key
for key in dict_ll:print(key)name
age
sex# 所有key
for key in dict_ll.keys():print(key)name
age
sex
# 所有value
for value in dict_ll.values():print(value)丽丽
20
女# 所有键和值
for item in dict_ll.items():print(item)(name, 丽丽)
(age, 20)
(sex, 女)# 等价于
for key,value in dict_ll.items(): # 上述的拆包print(key,value)name 丽丽
age 20
sex 女# 默认打印只有key值
print(dict_ll) #[name, age, sex]
print(dict_LL.items())3、列表list和字典dict互相转换 dict_ll {name:丽丽, age:20, sex:女}
# dict转list
print(list(dict_ll.items()))
# [(name, 丽丽), (age, 20), (sex, 女)]
# list转dict
print(dict([(name, 丽丽), (age, 20), (sex, 女)]))
# {name: 丽丽, age: 20, sex: 女 4、练习
# 疫情信息
list_epidemic [{region: 台湾, new: 16,now: 2339, total: 16931,},{region: 陕西, new: 182,now: 859, total: 1573,},{region: 浙江, new: 2,now: 505, total: 2008,},
]
# --打印所有疫情信息
for i in range(len(list_epidemic)):print(list_epidemic[i][region])print(list_epidemic[i][new])# 优化
for item in list_epidemic:print(item[region])print(item[new])# --查找新增人数大于10的地区名称(将结果存入新列表)
new_list []
for i in range(len(list_epidemic)):if list_epidemic[i][new]10:new_list.append(list_epidemic[i][region])
print(new_list)# 优化
new_list []
for item in list_epidemic:if item[new] 10:new_list.append(item[new])
# --查找现有人数最大的地区信息(结果为字典)
max list_epidemic[0][now]
flag 0
for i in range(0,len(list_epidemic)):if max list_epidemic[i][now]:max list_epidemic[i][now]flag i
print(list_epidemic[flag])
list_epidemic [{region: 台湾, new: 16,now: 2339, total: 16931,},{region: 陕西, new: 182,now: 859, total: 1573,},{region: 浙江, new: 2,now: 505, total: 2008,},
]
# --根据现有人数对疫情信息降序(大-小)排列
for i in range(len(list_epidemic)):for j in range(i1,len(list_epidemic)):if list_epidemic[i][now] list_epidemic[j][now]:list_epidemic[i],list_epidemic[j]list_epidemic[j],list_epidemic[i]
二、容器小结
1、种类与特征 字符串存储字符编码(a-97)不可变序列 列表list存储变量(地址)可变序列 元组tuple存储变量(地址)不可变序列 字典dict存储键值对可变散列
# 字典想拿到第一个键值对 转换为列表/元组
dict_ll {name:丽丽, age:20, sex:女}
list_key list(dict_ll()) # 拿到的只有键
print(list_key)
key list_key[0]
value dict_ll[key]list_item list(dict_ll.items())
print(list_item[0])# 转成元组更好省内存
tuple_item tuple(dict_ll.items())
print(tuple_item[0])
2、Python语言有哪些数据类型 可变类型预留空间自动扩容 如列表list,字典dict 优点操作数据方便能够增删改 缺点占用内存太大 不可变类型按需分配 如int,float,bool,str,tuple 优点占用内存小 缺点不能适应现实的变化
3、序列与散列 序列支持索引切片定位数据灵活 散列通过键定位数据速度最快
4、语法 列表 字典 创建 列表名[数据1数据2] 字典名{键1:值1,键2:值2} 列表名list(容器) 字典名dict(容器) 添加 列表名.append(元素) 字典名[键]值 不可变数据才可以当键 列表名.insert(索引,元素) 定位 列表名[整数] 字典名[键] 列表名[开始:结束:间隔] 删除 del 列表名[索引或切片] del 字典名[键] ,键值都删除 注意索引越界 列表名.remove(数据) 注意数据必须存在于列表中 遍历 for item in 列表名: for key in 字典 for i range(len(列表名)): for value in 字典.values() for k,v in 字典.items()
三、练习1
# 2. 在终端中获取颜色(RGBA),打印描述信息,
# 否则提示颜色不存在
# R - 红色
# G - 绿色
# B - 蓝色
# A - 透明度
dict_rgb {R:红色, G:绿色, B:蓝色, A:透明度}
input_rgb input(请输入颜色)
if input_rgb in dict_rgb:print(dict_rgb[input_rgb])
else:print(不存在)# 3. 将列表中的数字累减
list02 [5, 1, 4, 6, 7, 4, 6, 8, 5]
sum_last list02[0]
for i in range(1, len(list02)):sum_last - list02[i]
print(sum_last)# 4. 在列表中查找最大值(不使用max,自定义算法实现)
# 思路:
# 假设第一个元素就是最大值
# 依次与后面元素进行比较
# # 如果发现更大值,则替换
list02 [5, 1, 4, 6, 7, 4, 6, 8, 5]
max list02[0]
for item in list02:if max item:max item
print(max)# 5. 选做彩票双色球
# 红色6个 1--33之间的整数 不能重复
# 蓝色1个 1--16之间的整数
# 1) 随机产生一注彩票(列表(前六个是红色最后一个蓝色))
# 2) 在终端中录入一支彩票
# 要求满足彩票的规则.
import random
list_lottery []
for i in range(6):num random.randint(1,33)while num in list_lottery:num random.randint(1, 33)list_lottery.append(num)
list_lottery.append(random.randint(1,16))# 优化
import random
list_lottery []
while len(list_lottery) 6:num random.randint(1, 33)if num not in list_lottery:list_lottery.append(num)
list_lottery.append(random.randint(1,16))# 2) 在终端中录入一支彩票
# 要求满足彩票的规则.
list_lottery []
i 1
while i 6:num int(input(f请录入红色第{i}注彩票))if 1 num 33:if num not in list_lottery:list_lottery.append(num)i 1else:print(不能重复请重新输入)else:print(您输入的数字超出范围1-33请重新输入)while True:num2 int(input(f请录入蓝色第{i}注彩票))if 1 num2 6:list_lottery.append(num2)breakelse:print(您输入的数字超出范围1-6请重新输入)
print(f下注为{list_lottery})
四、练习二