第一次作业:
你真的了解元组和列表吗?
#思考题一:列表和元组存储数据方式差异是什么呢?性能孰优孰劣?
l = [1,2,3]
s = (1,2,3)
#思考题二: l 和 s 哪个所占的存储空间大呢?为什么?
l1 = []
l2 = list()
#思考题三:想创建一个空列表我们可以用上述两种方式,但是那种方式效率高呢?说一下你的理由
答案:
第一次作业
1. 列表去动态储存,元组是静态储存,元组的性能更加好一点
2. 列表所占用的储存空间大,因为列表是动态储存,需要指针来针对不同的内容,它的长度都有可能会变,所以需要额外的一些空间来预留列表的实时使用情况。
3. 第一种效率更高一点,因为list()创建的话,先要查找函数名,再去调用,相对来说时间会长一些
第二次作业:
你真的了解字典和集合吗?
#思考题一:集合支持索引操作吗?怎样判断一个元素在集合里面呢?
#思考题二:字典和集合为什么比列表和元组的效率高?他们的数据结构是什么?
#思考题三:下面初始化字典的方法那种更高效?为什么?
d1 = {"1":1,"2":2,"3":3}
d2 = dict({"1":1,"2":2,"3":3})
#思考题四:字典的键可以是个列表吗?为什么?
答案:
1.集合不支持索引操作,可以用 `in`来判断是否在集合里面
2.列表和元组查找的过程需要遍历循环,而字典和元组不需要,他们是由哈希表组成的
3.第一种效率高,直接创建比函数的创建更快一些
4.不可以是列表,因为key值是唯一的
第三次作业:
你真的了解字符串吗?
#思考题一:列出所有的转义字符。
#思考题二:下面两种字符串拼接那种方法更优呢?有没有更加高效更加pythonic的办法?
#1.
s = ""
for i in range(0,100000):
s += str(i)
#2.
l = []
for i in range(0,100000):
l.append(i)
s = " ".join(i)
答案:
转义字符 | 描述 |
---|---|
\(在结尾的时候) | 续行符 |
\ | 反斜杠符号 |
\ ’ | 单引号 |
\ ’ ’ | 双引号 |
\a | 响铃 |
\b | 退格 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
2.在多个字符串进行拼接的时候,append的拼接效果更好,因为字符串是不可变的类型,每次拼接都需要重新申请地址,当数量多起来效率就会低,而append只会申请一次。format替换格式化效率会更高一些。
第四次作业:
小明单位发了100元的购物卡,小明到超市买三类洗化用品:洗发水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些购买组合?
n =0
for i in range(6): # 洗发水不超过6个
for j in range(50):# 不超过50个
for k in range(20):# 牙刷不超过20个
if (i*15+j*2+k*5==100):
n+=1
print("第",n,"种:","洗发水的数量:",i,"香皂的数量:",j,"牙刷的数量:",k)
运行结果:
第 1 种: 洗发水的数量: 0 香皂的数量: 5 牙刷的数量: 18
第 2 种: 洗发水的数量: 0 香皂的数量: 10 牙刷的数量: 16
第 3 种: 洗发水的数量: 0 香皂的数量: 15 牙刷的数量: 14
第 4 种: 洗发水的数量: 0 香皂的数量: 20 牙刷的数量: 12
第 5 种: 洗发水的数量: 0 香皂的数量: 25 牙刷的数量: 10
第 6 种: 洗发水的数量: 0 香皂的数量: 30 牙刷的数量: 8
第 7 种: 洗发水的数量: 0 香皂的数量: 35 牙刷的数量: 6
第 8 种: 洗发水的数量: 0 香皂的数量: 40 牙刷的数量: 4
第 9 种: 洗发水的数量: 0 香皂的数量: 45 牙刷的数量: 2
第 10 种: 洗发水的数量: 1 香皂的数量: 0 牙刷的数量: 17
第 11 种: 洗发水的数量: 1 香皂的数量: 5 牙刷的数量: 15
第 12 种: 洗发水的数量: 1 香皂的数量: 10 牙刷的数量: 13
第 13 种: 洗发水的数量: 1 香皂的数量: 15 牙刷的数量: 11
第 14 种: 洗发水的数量: 1 香皂的数量: 20 牙刷的数量: 9
第 15 种: 洗发水的数量: 1 香皂的数量: 25 牙刷的数量: 7
第 16 种: 洗发水的数量: 1 香皂的数量: 30 牙刷的数量: 5
第 17 种: 洗发水的数量: 1 香皂的数量: 35 牙刷的数量: 3
第 18 种: 洗发水的数量: 1 香皂的数量: 40 牙刷的数量: 1
第 19 种: 洗发水的数量: 2 香皂的数量: 0 牙刷的数量: 14
第 20 种: 洗发水的数量: 2 香皂的数量: 5 牙刷的数量: 12
第 21 种: 洗发水的数量: 2 香皂的数量: 10 牙刷的数量: 10
第 22 种: 洗发水的数量: 2 香皂的数量: 15 牙刷的数量: 8
第 23 种: 洗发水的数量: 2 香皂的数量: 20 牙刷的数量: 6
第 24 种: 洗发水的数量: 2 香皂的数量: 25 牙刷的数量: 4
第 25 种: 洗发水的数量: 2 香皂的数量: 30 牙刷的数量: 2
第 26 种: 洗发水的数量: 2 香皂的数量: 35 牙刷的数量: 0
第 27 种: 洗发水的数量: 3 香皂的数量: 0 牙刷的数量: 11
第 28 种: 洗发水的数量: 3 香皂的数量: 5 牙刷的数量: 9
第 29 种: 洗发水的数量: 3 香皂的数量: 10 牙刷的数量: 7
第 30 种: 洗发水的数量: 3 香皂的数量: 15 牙刷的数量: 5
第 31 种: 洗发水的数量: 3 香皂的数量: 20 牙刷的数量: 3
第 32 种: 洗发水的数量: 3 香皂的数量: 25 牙刷的数量: 1
第 33 种: 洗发水的数量: 4 香皂的数量: 0 牙刷的数量: 8
第 34 种: 洗发水的数量: 4 香皂的数量: 5 牙刷的数量: 6
第 35 种: 洗发水的数量: 4 香皂的数量: 10 牙刷的数量: 4
第 36 种: 洗发水的数量: 4 香皂的数量: 15 牙刷的数量: 2
第 37 种: 洗发水的数量: 4 香皂的数量: 20 牙刷的数量: 0
第 38 种: 洗发水的数量: 5 香皂的数量: 0 牙刷的数量: 5
第 39 种: 洗发水的数量: 5 香皂的数量: 5 牙刷的数量: 3
第 40 种: 洗发水的数量: 5 香皂的数量: 10 牙刷的数量: 1
进程已结束,退出代码 0