读后笔记 -- Python 数据结构与算法分析 Chapter1/2:Python 基础 及算法分析

Chapter 1: Python 基础

1. 内建集合数据类型

# 1. list 相关
my_list = [1, 2, 3, 4]
# big_list 包含 3 个指向 my_list 的引用
big_list = [my_list] * 3
# big_list: [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
print(big_list)
my_list[2] = 45
# 修改一个元素,big_list 的3处都将改变, big_list: [[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
print(big_list)

# 2. 字符串相关
my_name = "Bruce He"
# "      Bruce He      ",总长度 w,原字符串居中,其他空格填充
print(my_name.center(20))
# "Bruce He            ",总长度 w,原字符串靠左,其他空格填充。相似的还有 string.rjust(w)
print(my_name.ljust(20))
# ['Bruce ', 'e'],在 s_char 位置将字符串分割成子串
print(my_name.split("H"))

# 3. string, tuple, set 不可修改
# 3.1 string
try:
    my_name[1] = "R"
except Exception as e:
    print(e)    # 'str' object does not support item assignment

print(id(my_name))  # 2287942062960
print(my_name.__add__(" great"), id(my_name))   # "Bruce He great 2414072517488", my_name 字符串的结果未变,"Bruce He great" 是拼接2个地址的结果

# 此时的 my_name 其实是另一个地址的引用
my_name = my_name.replace("r", "R")
print(my_name, id(my_name)) # BRuce He 2287942062832

# 3.2 tuple
my_tuple = (2, True, 4.96)
try:
    my_tuple[1] = False
except Exception as e:
    print(e)    # 'tuple' object does not support item assignment

# 3.3 set
my_set = {2, True, 4.96}
try:
    my_set[1] = False
except Exception as e:
    print(e)    # 'set' object does not support item assignment
list, string, tuple, set 相关

 

2. Python 集合类

2.1 有序集合:list, string, tuple -- 可以通过下标访问

2.2 无序集合:dict, set

 


Chapter 2:算法分析

2.2 常见的大 O 函数

f(n)   名称
常数
logn  对数 
 n 线性 
n * logn  线性对数 
 n2 平方 
 n3
立方 
 2n 指数 

2.3 Python 数据结构的性能

1)List 操作的大 O 效率

操作 O 效率   操作 大 O 效率
索引 O(1)   切片 O(k)
索引赋值 O(1)   删除切片 O(n)
追加 O(1)   设置切片 O(n + k)
pop() O(1)   反转 O(1)
pop(i) O(n)   连接 O(k)
insert(i, item) O(n)   排序 O(n * logn)
删除 O(n)   乘法 O(nk)
遍历 O(n)      
包含 O(n)      

2)字典

操作 大 O 效率
复制 O(1)
取值 O(1)
赋值 O(1)
删除 O(1)
包含 O(1)
遍历 O(n)

 

posted on 2024-10-05 16:54  bruce_he  阅读(9)  评论(0编辑  收藏  举报