数据结构
1. 四大结构对照表
Section titled “1. 四大结构对照表”| Java | Python | 字面量 | 特点 |
|---|---|---|---|
ArrayList | list | [1, 2, 3] | 有序、可变、可重复 |
HashMap | dict | {"k": "v"} | 键值对 |
HashSet | set | {1, 2, 3} | 去重、无序 |
| 无对应 | tuple | (1, 2) | 不可变的列表 |
2. list
Section titled “2. list”nums = [1, 2, 3]nums.append(4) # 加到末尾nums.insert(0, 99) # 插到指定位置nums.remove(2) # 删除值为 2 的元素last = nums.pop() # 弹出最后一个
print(nums[0]) # 第一个print(nums[-1]) # 最后一个(Java 没有的负索引)print(len(nums)) # 长度,不是 .size()3. 切片slice
Section titled “3. 切片slice”nums = [0, 1, 2, 3, 4, 5]nums[1:4] # [1, 2, 3] 索引 1 到 3nums[:3] # [0, 1, 2] 开头到索引 2nums[2:] # [2, 3, 4, 5] 索引 2 到末尾nums[::-1] # [5,4,3,2,1,0] 反转!4. dict(相当于 HashMap)
Section titled “4. dict(相当于 HashMap)”user = {"name": "Tom", "age": 30}print(user["name"]) # 取值(key 不存在会报错)print(user.get("email")) # 安全取值,不存在返回 Noneuser["email"] = "t@x.com" # 直接加 key
# 遍历(比 Java 优雅太多)for key, value in user.items(): print(key, value)
for key in user: # 默认遍历 key print(key)5. set(自动去重)
Section titled “5. set(自动去重)”tags = {"java", "python", "java"} # 自动变成 2 个元素tags.add("go")print("python" in tags) # True,成员判断超快
a = {1, 2, 3}b = {2, 3, 4}print(a & b) # 交集 {2, 3}print(a | b) # 并集 {1, 2, 3, 4}print(a - b) # 差集 {1}6. tuple(不可变,常用来打包返回值)
Section titled “6. tuple(不可变,常用来打包返回值)”point = (3, 4)x, y = point # 解包,一行拆成两个变量
# 函数返回多个值,本质就是 tupledef min_max(nums): return min(nums), max(nums)
low, high = min_max([3, 1, 4, 1, 5])7. 列表推导式 ⭐ 精髓
Section titled “7. 列表推导式 ⭐ 精髓”Java Stream 的平替,但短得多:
# 平方偶数squares = [x * x for x in range(10) if x % 2 == 0]# 等价 Java: stream().filter(...).map(...).collect(toList())
# 字典推导式name_len = {name: len(name) for name in ["Tom", "Jerry"]}- [[01-基础语法与变量类型]]
- [[03-函数与异常]] —— 函数返回多值就靠 tuple
- [[04-面向对象]]