007-2018-09-11 基础数据类型的补充

1.今日内容大纲

一. 回顾上节课内容
    1. 小数据池, 缓存字符串, 整数, 布尔值. 提高内存使用效率. 不需要重复创建对象
        数字: -5~256
        字符串:
            单个直接缓存
            多个字符. 只有数字, 字母, 下划线会缓存
            乘以1,同上
            乘以大于1, 总长度不超过20  4096

        在同一个代码块中. 以上规则会有变化.
            1. 数字. 默认都缓存.
            2. 字符串. 默认也都缓存.
        在不同的代码块中. 遵守的就是最上面的规则

    2. is和==的区别
        == 比较的是值.
        is 比较的是内存地址

    3. 编码
        encode() 编码
        decode() 解码


二. 作业讲解
三. 今日主要内容
        join() 把列表中的每一项用字符串拼接起来
        split() 相反
    1. 关于删除(重点)
        1. 循环迭代过程中不能删除。
        2. 创建新列表。 把要删除的内容保存在新列表中。 循环新列表, 删除老列表
        3. 字典在循环的时候可以修改, 但不能新增和删除

        dict.fromkeys(k, v)
        把key迭代。和value组合成k:v创建新字典, 所有的key共享同一个value
    2. set集合(粗略)
        特点: 无序, 去重, 哈希
        lst = []
        list(set(lst)) # 去重复
    3. 深浅拷贝(难点)
        1. 赋值。 不会产生新对象。 和拷贝没关系
        2. 浅拷贝。 只会复制自身。 会创建对象
        2. 深拷贝。 把内部所有的内容都进行拷贝。

    预习: 文件操作(read, write, append, open)
    周日考试: 从考试到文件操作

2.练习

'''
Day6作业及默写

1,老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委. 让10个评委进⾏打分, 要求, 分数必须⼤于5分, ⼩于10分.


2. 电影投票. 程序先给出⼀个⽬前正在上映的电影列表. 由⽤户给每⼀个电影投票. 最终 将该⽤户投票信息公布出来 lst = ['⾦瓶梅', '解救吾先⽣', '美国往事', '⻄⻄⾥的美丽传说'] 结果: {'⾦瓶梅': 99, '解救吴先⽣': 80, '美国往事': 6, '⻄⻄⾥的美丽传说': 23}

3. 念数字.  给出一个字典. 在字典中标识出每个数字的发音. 包括相关符号. 然后由用户输入一个数字. 让程序读出相对应的发音(不需要语音输出. 单纯的打印即可)


4. 车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量.

5. 干掉主播. 现有如下主播收益信息, 按照要求, 完成相应操作:


今日默写:
	== 和is的区别
	Unicode,gbk,utf-8的转化。

'''

# 电影投票. 程序先给出⼀个⽬前正在上映的电影列表.
# 由⽤户给每⼀个电影投票. 最终 将该⽤户投票信息公布出来
# lst = ['⾦瓶梅', '解救吾先⽣', '美国往事', '⻄⻄⾥的美丽传说']
# 结果: {'⾦瓶梅': 99, '解救吴先⽣': 80, '美国往事': 6, '⻄⻄⾥的美丽传说': 23}
# lst = ["头号玩家", "爱情公寓", "一出好戏", "西虹市首富"]
# dic = {}
# for el in lst: # 每一个电影, "头号玩家"
#     fen = input("请给<%s>电影打分:" % el)
#     dic[el] = int(fen)
#
# print(dic)


# 3.念数字.  给出一个字典. 在字典中标识出每个数字的发音. 包括相关符号.
# 然后由用户输入一个数字. 让程序读出相对应的发音(不需要语音输出. 单纯的打印即可)
# dic = {
#     "-": "fu",
#     "1": "yi",
#     "2": "er",
#     "3": "san",
#     "4": "si",
#     "5": "wu",
#     "6": "liu",
#     "7": "qi",
#     "8": "ba",
#     "9": "jiu",
#     "0": "ling",
#     ".": "dian"
# }
# num = input("请输入你要读的数字:")    # 1.25
# s = ""
# for c in num:
#     s = s + dic[c] + " "
# print(s)


# 4.车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量.
# cars = ["鲁A 10086", "黑A 45678", "黑C 12345", "京B 00001", "京C 78912", "京A 66666"]
# locations = {"鲁": "山东", "黑": "黑龙江", "京": "北京", "沪": "上海"}
# dic = {}
#
# for car in cars: # 每个车牌子 鲁A 10086
#     paitou = car[0] # 鲁
#     # if dic.get(locations[paitou]) == None:
#     #     dic[locations[paitou]] = 1
#     # else:
#     #     dic[locations[paitou]] = dic[locations[paitou]]+1
#
#     # 省份 # "山东": 1, "黑龙江":1
#     # num = dic.get(locations[paitou], 0)
#     # num = num + 1
#     # dic[locations[paitou]] = num
#
#     dic[locations[paitou]] = dic.setdefault(locations[paitou], 0) + 1
#
# print(dic)

zhubo = {"旭旭宝宝": 99999999, "轩墨宝宝": 56565656, "alex": 2, "wusir": 60, "金老板": 60000, "卢本伟": 99999999}
s = 0
for value in zhubo.values():
    s += value
avg = s/len(zhubo)
print(avg)

# zhubo.pop("卢本伟")
# print(zhubo)

# 需要找一个列表把要删除的内容记录下来
lst = []
for k, v in zhubo.items():
    if v < avg:
        lst.append(k) # 把要删除的主播. 记录下来

for el in lst:
    zhubo.pop(el)

print(zhubo)







# result = {"山东": 1, "黑龙江":2, "北京":3}




3.join()

# lst = ["汪峰", "吴君如", "李嘉欣", "陈慧琳", "关之琳"]
# # 遍历列表. 把列表中的每一项用"_" 做拼接
# s = "_".join(lst) # 把列表转化成字符串
# print(s)
#
#
# s1 = "汪峰_吴君如_李嘉欣_陈慧琳_关之琳"
# ls = s1.split("_") # 把字符串转化成列表
# print(ls)

# print("*".join("马化腾"))

4.关于删除

# lst = ["渣渣辉", "古天绿", "陈小春", "彭佳慧", "郑中基", "胡辣汤"]
# # lst.clear()
# # for el in lst: # for 内部有一个变量来记录当前被循环的位置, 索引.
# #     lst.remove(el) # 直接删除. 是删不干净的. 原因是每次删除都设计到元素的移动. 索引在变.
#
# # 先把要删除的内容保存在一个新列表中. 循环这个新列表. 删除老列表
# new_lst = []
# for el in lst:
#     new_lst.append(el)
# for el in new_lst:
#     lst.remove(el)
# print(lst)

# lst = ["张无忌", "张三丰", "张翠山", "张嘉译", '刘嘉玲', "刘能", '刘老根']
# # 删除姓张的人
# new_lst = []
# for el in lst:
#     if el.startswith("张"):
#         new_lst.append(el)
#
# for el in new_lst:
#     lst.remove(el)
# print(lst)

# dic = {"谢逊": '金毛狮王', "韦一笑":"青翼蝠王","殷天正":"白眉鹰王","金花婆婆":"紫衫龙王"}
# for k in dic:
#     dic['谢逊'] = "张无忌他爹"
# print(dic)

5.fromkeys()

# d = {}
# # fromkeys正常来说应该是类名来访问的.
# dd = d.fromkeys(["胡辣汤","are you 确定?"], "周芷若") # fromkeys是一个类方法.作用是创建新字典
# print(d) # 原字典没有改变
# print(dd) # 新的字典是通过第一个参数的迭代. 和第二个参数组合成key:value创建新字典

# d = dict.fromkeys(["哇哈哈", "爽歪歪"], []) # 所有的key用的都是同一个列表,改变其中一个。 另一个也跟着改变
# d["哇哈哈"].append("张无忌")
# print(d)
#
# print(id(d['哇哈哈']), id(d["爽歪歪"]))

6.set集合

# dic = {"a":"哇哈哈", "a":"爽歪歪"}
# print(dic) # key 不会重复
# dic[[1,2,3]] = "哇哈哈" # 必须是可哈希的

# s = set() # 空集合
# s = {1,2,3,6,3,4,6,4, [4,5,6]} # 不重复, 必须是可哈希的
# print(s)

# set其实就是不存value的字典. 只存key
# 去重复
# lst = [1,2,3,4,4,4,4,5,5,6,7,7,7]
# s = set(lst)
# lst = list(s)
# print(lst)

s = {"赵本山", "范伟", "小沈阳", "高秀敏", "宋小宝"}
# s.add("赵铁柱")
# s.add("李小花")
# s.add("王尼玛")
# s.add("张全蛋")
# print(s)
#
# s.update(("刘伟", '张伟', "张三丰")) # 迭代更新

# item = s.pop()
s.remove("小沈阳")
print(s)
# print(item)

# for el in s:
#     print(el)

7.深浅拷贝

# lst1 = ["太白","日天","哪吒","银王","金王"]
# lst2 = lst1
# lst1.append("女神")
# print(id(lst1))
# print(id(lst2))

# lst1 = ["太白","日天","哪吒","银王","金王"]
# # lst2 = lst1[:]  # 创建了新列表
# lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
# lst1.append("女神")
# print(lst1)
# print(lst2)

# lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
# lst2 = lst1.copy() # 会创建新对象, 创建对象的速度会很快.
# # lst1[2].append("油泼扯面")
# print(id(lst1[2]), id(lst2[2]))

# 导入拷贝模块
# import copy
# lst1 = ["太白","日天",["盖浇饭", "锅包肉", "吱吱冒油的猪蹄子"],"哪吒","银王","金王"]
# lst2 = copy.deepcopy(lst1)
# print(id(lst1[2]), id(lst2[2]))

# 赋值没有创建新对象。多个变量共享同一个对象
# 浅拷贝。 会创建新对象。 新的对象中里面的内容不会被拷贝
# 深拷贝。 创建一个一摸一样的完全新的对象。 这个对象延伸出来的内容也会跟着复制一份


a = [1, 2]
a[1] = a
print(a[1])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值