"""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()