文章目录
- Python入门——序列(章节实操作业)
- 1.画出代码 a = [100,200,300] 的内存示意图
- 2.使用 range 生成序列:30,40,50,60,70,80
- 3.推导式生成列表:a = [x * 2 for x in range(100) if x % 9 ==0] 输出结果
- 4.使用二维列表存储表格信息,并画出简单的内存示意图
- 5.元组和列表有哪些共同点?有哪些不同点?
- 6.创建一个字典对象,包含如下信息:支出金额:300.15,支出日期:2018.10.18,支出人:高小七
- 7.使用字典存储行数据,最后将整个表使用列表存储起来。
- 8.用文字和自己画的示意图描述:字典存储一个键值对的底层过程
- 9.集合和字典有什么关系?
- 9.集合和字典有什么关系?
Python入门——序列(章节实操作业)
1.画出代码 a = [100,200,300] 的内存示意图

2.使用 range 生成序列:30,40,50,60,70,80
print([x for x in range(30, 90, 10)]) # [30, 40, 50, 60, 70, 80]
3.推导式生成列表:a = [x * 2 for x in range(100) if x % 9 ==0] 输出结果
# [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
4.使用二维列表存储表格信息,并画出简单的内存示意图
| 姓名 | 年龄 | 薪资 | 城市 |
|---|---|---|---|
| 高小一 | 18 | 30000 | 北京 |
| 高小二 | 19 | 20000 | 上海 |
| 高小五 | 20 | 10000 | 深圳 |
a = ["高小一", 18, 30000, "北京"]
b = ["高小二", 18, 30000, "北京"]
c = ["高小五", 18, 30000, "北京"]
result_list = [a, b, c]
for result in result_list:
print(result)
5.元组和列表有哪些共同点?有哪些不同点?
共同点:
1.存储多个元素:元组和列表都可以存储多个元素,这些元素可以是不同类型的数据(如整数、浮点数、字符串、甚至是其他列表或元组)。
2.索引和切片:两者都支持通过索引(indexing)和切片(slicing)来访问其元素。索引从0开始,可以使用负索引访问从末尾开始的元素。切片则允许你访问子序列。
3.可迭代:元组和列表都是可迭代的,这意味着你可以使用for循环遍历它们。
4.长度:都可以使用内置函数len()来获取它们的长度(即包含的元素数量)。
不同点:
1.可变性:列表是可变的,可以在创建列表之后进行添加、删除和更新的操作
元组是不可变的,意味着一旦创建就不能更改其中的元素。如果尝试更改,Python 会抛出 TypeError 异常
2.语法:列表使用方括号 [] 定义,元组使用圆括号 () 定义
3.性能:由于元组是不可变的,Python在内部可以对元组进行优化以提高效率,特别是在包含大量数据时。此外,因为元组是不可变的,所以它们可以用作字 典的键(keys)或集合(sets)的元素,而列表则不可以。
列表因为支持动态更改,所以在性能上可能会略逊于元组,尤其是在进行大量元素更改操作时。
6.创建一个字典对象,包含如下信息:支出金额:300.15,支出日期:2018.10.18,支出人:高小七
message = {"支出金额": 300.15, "支出日期": "2024.09.08", "支出人": "高小七"}
7.使用字典存储行数据,最后将整个表使用列表存储起来。
| 姓名 | 年龄 | 薪资 | 城市 |
|---|---|---|---|
| 高小一 | 18 | 30000 | 北京 |
| 高小二 | 19 | 20000 | 上海 |
| 高小五 | 20 | 10000 | 深圳 |
a = {"姓名": "高小一", "年龄": 18, "薪资": 30000, "城市": "北京"}
b = {"姓名": "高小二", "年龄": 19, "薪资": 20000, "城市": "上海"}
c = {"姓名": "高小五", "年龄": 20, "薪资": 10000, "城市": "深圳"}
result_list = [a, b, c]
for result in result_list:
print(result)
# {'姓名': '高小一', '年龄': 18, '薪资': 30000, '城市': '北京'}
# {'姓名': '高小二', '年龄': 19, '薪资': 20000, '城市': '上海'}
# {'姓名': '高小五', '年龄': 20, '薪资': 10000, '城市': '深圳'}
8.用文字和自己画的示意图描述:字典存储一个键值对的底层过程
a = {"name": "CY"}
print(bin(hash("name"))[2:]) # 1001110011001100111111110000101011011010000100101000111100010
创建出来了一个字典,底层默认创建出长度为8的均匀的存储空间,其中每一个大小都相同,成为 bucket。计算 name 的哈希值(二进制),首先通过最右侧三位(010)十进制结果是2。我们查看偏移量2,对应的 bucket 是否为空,如果为空,则将键值对放进去。如果不为空,则会依次取右边三位偏移量,即: 001,十进制数字是4。在查看偏移量为4的 bucket 是否为空。直到找到为空的 bucket 把键值对放进去。

流程图:
期间的自动扩容是大概在 2 / 3左右开始扩容 2 ^ n
9.集合和字典有什么关系?
集合是一个无序的,元素不可重复的序列
字典存储的是键值对,字典中的每一个元素都是一个键值对,键不可以重复,但值无所谓。
中…(img-YrtTn1o4-1725731512651)]
9.集合和字典有什么关系?
集合是一个无序的,元素不可重复的序列
字典存储的是键值对,字典中的每一个元素都是一个键值对,键不可以重复,但值无所谓。
集合的底层就是字典实现的,集合中的所有元素就是字典的键对象
&spm=1001.2101.3001.5002&articleId=142007358&d=1&t=3&u=495e89da8f984ebcaa429bde9d172033)
500

被折叠的 条评论
为什么被折叠?



