跳转到内容

数据结构

JavaPython字面量特点
ArrayListlist[1, 2, 3]有序、可变、可重复
HashMapdict{"k": "v"}键值对
HashSetset{1, 2, 3}去重、无序
无对应tuple(1, 2)不可变的列表
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()
nums = [0, 1, 2, 3, 4, 5]
nums[1:4] # [1, 2, 3] 索引 1 到 3
nums[:3] # [0, 1, 2] 开头到索引 2
nums[2:] # [2, 3, 4, 5] 索引 2 到末尾
nums[::-1] # [5,4,3,2,1,0] 反转!
user = {"name": "Tom", "age": 30}
print(user["name"]) # 取值(key 不存在会报错)
print(user.get("email")) # 安全取值,不存在返回 None
user["email"] = "t@x.com" # 直接加 key
# 遍历(比 Java 优雅太多)
for key, value in user.items():
print(key, value)
for key in user: # 默认遍历 key
print(key)
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 # 解包,一行拆成两个变量
# 函数返回多个值,本质就是 tuple
def min_max(nums):
return min(nums), max(nums)
low, high = min_max([3, 1, 4, 1, 5])

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-面向对象]]