Python 容器案例

下面这段代码可以直接复制到 .py 文件中运行,覆盖 listtupledictsetstr 的常见操作,以及浅拷贝和深拷贝区别。

import copy
from functools import reduce
 
 
def list_case():
    students = ["Tom", "Lucy", "Jack"]
    students.append("Lily")
    students.insert(1, "Bob")
    print("list add:", students)
 
    removed = students.pop()
    students.remove("Bob")
    print("list remove:", removed, students)
 
    scores = [80, 95, 72, 88]
    print("list sorted copy:", sorted(scores))
    scores.sort(reverse=True)
    print("list in-place sort:", scores)
    print("list comprehension:", [score for score in scores if score >= 80])
 
 
def tuple_case():
    user = ("Tom", 20, "Beijing")
    name, age, city = user
    print("tuple unpack:", name, age, city)
    print("tuple count:", (1, 2, 2, 3).count(2))
 
 
def dict_case():
    profile = {"name": "Tom", "age": 20}
    profile["city"] = "Beijing"
    profile.update({"score": 95})
    print("dict:", profile)
    print("dict get:", profile.get("name"), profile.get("missing", "default"))
 
    for key, value in profile.items():
        print("dict item:", key, value)
 
    defaults = {"role": "student", "score": 0}
    print("dict merge:", defaults | profile)
 
 
def set_case():
    a = {1, 2, 3}
    b = {3, 4, 5}
    print("set union:", a | b)
    print("set intersection:", a & b)
    print("set difference:", a - b)
    print("set comprehension:", {x * x for x in range(10) if x % 2 == 0})
 
 
def str_case():
    text = "  Python,Java,Go  "
    cleaned = text.strip()
    print("str cleaned:", cleaned)
    print("str split:", cleaned.split(","))
    print("str join:", " | ".join(cleaned.split(",")))
    print("str f-string:", f"{'Tom'} score={95.678:.2f}")
 
 
def common_case():
    numbers = [3, 1, 4, 1, 5]
    print("len/max/min/sum:", len(numbers), max(numbers), min(numbers), sum(numbers))
    print("sorted/reversed:", sorted(numbers), list(reversed(numbers)))
    print("map:", list(map(lambda x: x * 2, numbers)))
    print("filter:", list(filter(lambda x: x % 2 == 1, numbers)))
    print("reduce:", reduce(lambda a, b: a + b, numbers))
 
 
def copy_case():
    students = [["Tom", 80], ["Lucy", 95]]
 
    shallow = students.copy()
    shallow[0][1] = 100
    print("after shallow copy:", students)
 
    students = [["Tom", 80], ["Lucy", 95]]
    deep = copy.deepcopy(students)
    deep[0][1] = 100
    print("after deep copy:", students)
    print("deep copy:", deep)
 
 
def main():
    list_case()
    tuple_case()
    dict_case()
    set_case()
    str_case()
    common_case()
    copy_case()
 
 
if __name__ == "__main__":
    main()