Golang 复合类型:数组、切片与映射

前言 Go 的日常编码,八成时间在和 slice 与 map 打交道。这篇把它们的核心语义和著名"陷阱"讲透。 一、数组:定长的值类型 // 长度是类型的一部分: [3]int 和 [4]int 是不同类型! var a [3]int // {0, 0, 0}(零值) b := [3]int{1, 2, 3} c := [...]int{1, 2, 3} // 编译器数长度, 仍是 [3]int // 数组是值类型: 赋值和传参都是完整拷贝! d := b d[0] = 99 fmt.Println(b[0]) // 1 —— b 不受影响 实际开发中很少直接用数组(定长 + 值拷贝太死板),主力是切片。 ...

2023-11-18 · 3 min · zy

Python 数据结构:列表、字典与集合

前言 Python 写得好不好,一半看数据结构选得对不对。内置的四大金刚——列表、元组、字典、集合——覆盖了日常 95% 的场景。 一、列表:有序可变序列 # 创建 nums = [1, 2, 3] mixed = [1, "hello", True, [4, 5]] # 可以混装类型 # 索引与切片 nums[0] # 1 nums[-1] # 3(负数从尾部数) nums[0:2] # [1, 2] nums[::-1] # [3, 2, 1] 反转 # 增删改 nums.append(4) # 尾部追加: [1,2,3,4] nums.insert(0, 0) # 指定位置插入 nums.extend([5, 6]) # 拼接另一个列表 nums.pop() # 弹出尾部元素 nums.pop(0) # 弹出指定下标 nums.remove(3) # 按值删除(只删第一个匹配) del nums[0] # 按下标删除 # 常用操作 len(nums) # 长度 sorted(nums, reverse=True) max(nums), min(nums), sum(nums) 1 in nums # 成员判断(列表是 O(n)) nums.index(2) # 查下标 nums.count(2) # 计数 ⚠️ 经典坑:b = a 只是引用同一个列表,改 b 会影响 a。要复制用 a.copy() 或 a[:]。 ...

2023-08-19 · 3 min · zy