|
|
@@ -0,0 +1,85 @@
|
|
|
+"""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()
|
|
|
+
|