list_basics.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """list_basics.py - Python 列表基础示例
  2. 包含常见的列表操作示例:创建、访问、切片、增删、查询、排序、复制、遍历、推导式等。
  3. 运行后会打印每个示例的结果(并在代码中注释预期输出)。
  4. """
  5. import copy
  6. def main():
  7. skills = ["python", "java", "c++", "c#", "javascript"]
  8. print("原始列表:", skills)
  9. # 访问与切片
  10. print("skills[0] ->", skills[0]) # python
  11. print("skills[-1] ->", skills[-1]) # javascript
  12. print("skills[1:4] ->", skills[1:4]) # ['java', 'c++', 'c#']
  13. print("skills[-2:] ->", skills[-2:]) # ['c#', 'javascript']
  14. print("skills[::-1] ->", skills[::-1]) # 反转,返回新列表
  15. # 增加
  16. skills.append("go")
  17. print("append ->", skills) # 尾部添加
  18. skills.extend(["rust", "swift"])
  19. print("extend ->", skills) # 尾部添加多个
  20. skills.insert(1, "typescript")
  21. print("insert ->", skills) # 在索引1前插入
  22. # 删除
  23. skills.remove("java") # 删除第一个 'java'
  24. print("remove('java') ->", skills)
  25. popped = skills.pop() # 弹出最后一个
  26. print("pop() ->", popped, "; after pop ->", skills)
  27. popped_idx = skills.pop(2) # 弹出索引2的元素
  28. print("pop(2) ->", popped_idx, "; after pop ->", skills)
  29. # 查询
  30. print("'python' in skills ->", 'python' in skills)
  31. print("skills.count('python') ->", skills.count('python'))
  32. # 排序与反转
  33. nums = [3, 1, 4, 1, 5]
  34. print("nums before:", nums)
  35. print("sorted(nums) ->", sorted(nums)) # 返回新列表
  36. nums.sort()
  37. print("nums after sort() ->", nums) # 原地排序
  38. nums.reverse()
  39. print("nums after reverse() ->", nums) # 原地反转
  40. # 复制与可变性
  41. a = [1, 2, [3, 4]]
  42. b = a # b 与 a 指向同一个对象
  43. c = a[:] # 浅拷贝,顶层复制
  44. d = copy.deepcopy(a) # 深拷贝
  45. a[0] = 100
  46. a[2].append(5)
  47. print("a:", a)
  48. print("b (same ref):", b) # 反映 a 的所有变化
  49. print("c (shallow copy):", c) # c[0] 未改变,但 c[2](嵌套列表)受影响
  50. print("d (deep copy):", d) # 完全独立
  51. # 遍历与推导式
  52. for i, val in enumerate(['a', 'b', 'c']):
  53. print("enumerate:", i, val)
  54. squares = [x*x for x in range(6) if x % 2 == 0]
  55. print("squares (comprehension):", squares)
  56. # 例:交换两个元素
  57. arr = [1, 2, 3]
  58. arr[0], arr[2] = arr[2], arr[0]
  59. print("swap arr ->", arr)
  60. # 解包(剩余收集)
  61. first, *middle, last = [10, 20, 30, 40, 50]
  62. print("unpack ->", first, middle, last)
  63. if __name__ == '__main__':
  64. main()