| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- """list_basics.py - Python 列表基础示例
- 包含常见的列表操作示例:创建、访问、切片、增删、查询、排序、复制、遍历、推导式等。
- 运行后会打印每个示例的结果(并在代码中注释预期输出)。
- """
- import copy
- def main():
- skills = ["python", "java", "c++", "c#", "javascript"]
- print("原始列表:", skills)
- # 访问与切片
- print("skills[0] ->", skills[0]) # python
- print("skills[-1] ->", skills[-1]) # javascript
- print("skills[1:4] ->", skills[1:4]) # ['java', 'c++', 'c#']
- print("skills[-2:] ->", skills[-2:]) # ['c#', 'javascript']
- print("skills[::-1] ->", skills[::-1]) # 反转,返回新列表
- # 增加
- skills.append("go")
- print("append ->", skills) # 尾部添加
- skills.extend(["rust", "swift"])
- print("extend ->", skills) # 尾部添加多个
- skills.insert(1, "typescript")
- print("insert ->", skills) # 在索引1前插入
- # 删除
- skills.remove("java") # 删除第一个 'java'
- print("remove('java') ->", skills)
- popped = skills.pop() # 弹出最后一个
- print("pop() ->", popped, "; after pop ->", skills)
- popped_idx = skills.pop(2) # 弹出索引2的元素
- print("pop(2) ->", popped_idx, "; after pop ->", skills)
- # 查询
- print("'python' in skills ->", 'python' in skills)
- print("skills.count('python') ->", skills.count('python'))
- # 排序与反转
- nums = [3, 1, 4, 1, 5]
- print("nums before:", nums)
- print("sorted(nums) ->", sorted(nums)) # 返回新列表
- nums.sort()
- print("nums after sort() ->", nums) # 原地排序
- nums.reverse()
- print("nums after reverse() ->", nums) # 原地反转
- # 复制与可变性
- a = [1, 2, [3, 4]]
- b = a # b 与 a 指向同一个对象
- c = a[:] # 浅拷贝,顶层复制
- d = copy.deepcopy(a) # 深拷贝
- a[0] = 100
- a[2].append(5)
- print("a:", a)
- print("b (same ref):", b) # 反映 a 的所有变化
- print("c (shallow copy):", c) # c[0] 未改变,但 c[2](嵌套列表)受影响
- print("d (deep copy):", d) # 完全独立
- # 遍历与推导式
- for i, val in enumerate(['a', 'b', 'c']):
- print("enumerate:", i, val)
- squares = [x*x for x in range(6) if x % 2 == 0]
- print("squares (comprehension):", squares)
- # 例:交换两个元素
- arr = [1, 2, 3]
- arr[0], arr[2] = arr[2], arr[0]
- print("swap arr ->", arr)
- # 解包(剩余收集)
- first, *middle, last = [10, 20, 30, 40, 50]
- print("unpack ->", first, middle, last)
- if __name__ == '__main__':
- main()
|