关于哈希
可哈希:不可变的数据类型(int str tuple bool)
不可哈希:可变的数据类型(list dict set)
列表的增删改查
# 向列表中添加内容
lst = []
lst.append("动漫") # 追加内容
lst.append("二次元")
lst.insert(0, "我") # 指定位置插入
lst.extend(['海贼王', '春物', 'EVA']) # 合并列表,批量添加
print(lst) # ['我', '动漫', '二次元', '海贼王', '春物', 'EVA']
print("---------------------------------------------")
# 删除
# 列表元素:['我', '动漫', '二次元', '海贼王', '春物', 'EVA']
ret = lst.pop(3) # 指定索引删除,返回被删除的元素
print(ret)
print(lst) # ['我', '动漫', '二次元', '春物', 'EVA']
lst.remove('春物') # 删除指定元素
print(lst) # ['我', '动漫', '二次元', 'EVA']
print("---------------------------------------------")
#修改
#列表元素:['我', '动漫', '二次元', 'EVA']
lst[3] = "AA"
print(lst) # ['我', '动漫', '二次元', 'AA']
lst = ['张三' ,'小五', "张四", '小王']
# 把姓张的都改成王的
for i in range(len(lst)):
item = lst[i]
if item.startswith('张'):
new = '王' + item[1:]
print(new)
lst[i] = new
print("---------------------------------------------")
#排序
lst = [2, 44, 5, 57, 1, 9]
lst.sort() # 升序排序
print(lst)
lst.sort(reverse=True) # 倒叙排序
print(lst)
#嵌套
lst = ["aa", "bb", ["1", "2", "3", ["EVA", 2]], "cc"]
print(lst[2][3][0]) # EVA
print("--------------------------------------------")
#列表循环删除
lst = ["路飞", "路奇", "索隆", "山治", "香克斯", "凯多"]
temp = [] # 临时列表
for i in lst:
if i.startswith("路"):
temp.append(i) # 把要删除的内容记录下来
for i in temp:
lst.remove(i) # 去原列表删除
print(lst) # ["索隆", "山治", "香克斯", "凯多"]
#最稳妥的循环删除方式: 将要删除的内容存在一个新的列表中;循环新列表,删除老列表
元组
t = ("路飞", "香克斯", "黑胡子")
print(t)
print(t[1:])
#t[0] = "尼卡" # 元组不可变
print(t)
print("-----------------------------------")
t = ("路飞") # 这样定义只是单纯的一个字符串
print(type(t))
print(t)
t = ("路飞",) # 定义只有一个元素的元组要在末尾加,
print(type(t))
print(t)
print("-----------------------------------")
t = (1, 2, 3, ["路飞", "香克斯", "黑胡子"])
t[3].append("五老星") # 元组的不可变指的是内存地址不能变,但可变元素内的内容可以变 不推荐这么做
t[3][0] = "尼卡"
# t[3] = [1, 2, 3] # 像这种改变地址的行为就会报错
print(t)
字典
dic = {"明日香":"002", "真嗣":"001", "凌波丽":"000"}
# 字典的key必须是可哈希的数据类型(不可变)
dic1 = {"海贼王":["路飞", "索隆", "山治"]}
# 字典的value可以是任何数据类型
val = dic["明日香"] # 用键当索引
print(val)
print("--------------------------------------------------")
#新增,修改
dic = dict() # 创建一个空字典
dic['路飞'] = '船长'
dic[1] = 2
print(dic)
dic['路飞'] = '海贼王' # 相同的key,执行的是修改操作
print(dic)
dic.setdefault('罗杰', '海贼王') # 设置默认值,如果已经有了该key,setdefault不起作用,与上方有差别
dic.setdefault('路飞', '橡胶') # 此时这个就不起作用
print(dic)
#删除
dic.pop('罗杰') # 根据key删除
print(dic)
#查询
print(dic['路飞']) # 若key不存在,程序报错
print(dic.get('路飞')) # 若key不存在,返回none
print("--------------------------------------------------")
#循环
dic = {
"小明":"数学很厉害",
"小周":"打游戏很厉害",
"小红":"天天唱歌",
"小张":"已经走上人生巅峰"
}
for i in dic: # 直接循环字典,默认拿到的是key
print(i, dic[i])
print(list(dic.keys())) # 拿到所有key放入列表
print(list(dic.values())) # 拿到所有value放入列表
print(list(dic.items())) # 直接拿到键值对放入列表
print("==================")
for key, value in dic.items(): # 遍历字典中的键值对
print(key, value)
#上面遍历的原理:a,b = 1,2————a,b = (key,value)————a,b = items
print("--------------------------------------------------")
#嵌套
luffy = {
"name":"路飞",
"age": 23,
"brother":{
"name":"艾斯",
"skill":"火拳"
},
"friend":{
"name":"索隆",
"hear":"绿色"
}
}
name = luffy['brother']['name']
print(name)
print("--------------------------------------------------")
#关于字典的循环删除
#不管是列表还是字典,循环删除需要准备一个新列表
dic = {
"李明":"数学很厉害",
"李红":"天天唱歌",
"小周":"打游戏很厉害",
"小张":"已经走上人生巅峰"
}
temp = []
for i in dic:
if i.startswith('李'):
temp.append(i)
for j in temp:
dic.pop(j)
print(dic)