def test_set():
    """
    测试set的基本操作
    """
    _list = list(range(9))
    _list.append(8)  # 添加一个元素到列表中
    print("_list:", _list)

    var_set = set(_list)  # java-set
    var_set.add(1)  # set 可以自动去重元素
    print("var_set:", var_set)

    copy_set = var_set.copy()  # 复制集合
    var_set.pop()  # 删除集合中的一个元素
    print("var_set after pop:", var_set)
    print("copy_set:", copy_set)

    var_set.discard(1)  # 删除集合中的元素,如果不存在则不报错
    print("var_set after discard 1:", var_set)

    difference_set = copy_set.difference(var_set)  # 取差集
    print("var_set after difference with copy_set:", difference_set)

    intersection_set = var_set.intersection(copy_set)  # 取交集
    print("var_set交集copy_set:", intersection_set)

    print("var_set:", var_set, 'difference_set:', difference_set)
    copy_set.difference_update(difference_set)  # 从集合中删除与 copy_set 中相同的元素, 差集
    print("copy_set从集合中删除与 difference_set 中相同的元素 copy_set:", copy_set)

    var_set.add(9)  # 添加一个元素到集合中
    print("var_set after add 9:", var_set)

    var_set.intersection_update(copy_set)  # 更新集合为与 copy_set 的交集
    print("var_set更新集合为与 copy_set 的交集:", var_set)

    var_set.add(11)  # 添加一个元素到集合中
    print("---var_set:", var_set, 'copy_set:', copy_set)

    union_set = var_set.union(copy_set)  # 并集
    print("==var_set与copy_set 并集:", union_set)

    # var_set.remove(9)  # 删除集合中的元素,如果不存在则报错
    # print("var_set after remove 9:", var_set)

    print("----var_set:", var_set, 'copy_set:', copy_set)
    copy_set.update(var_set)  # 更新集合,添加差集中的元素
    print("===copy_set 更新集合,添加差集中的元素copy_set:", copy_set)

    var_set.add(33)  # 添加一个元素到集合中
    copy_set.add(22)  # 添加一个元素到集合中
    print("---var_set:", var_set, 'copy_set:', copy_set)

    symmetric_difference_set = var_set.symmetric_difference(copy_set)  # 对称差集 (只保留两个集合中独有的元素 , 即各自有但不重复的元素)
    print("=== var_set对称差集copy_set:", symmetric_difference_set)

    var_set.symmetric_difference_update(copy_set)  # 对称差集更新 (只保留两个集合中独有的元素 , 即各自有但不重复的元素)
    print("===var_set对称差集更新copy_set:", var_set)

    isdisjoint = var_set.isdisjoint(copy_set)  # 是否 没有 交集 (即没有共同的元素)
    print("isdisjoint:", isdisjoint)

    print("----intersection_set:", intersection_set, 'copy_set:', copy_set)
    issubset = intersection_set.issubset(copy_set)  # intersection_set是否是copy_set的子集 (即是否所有元素都在 copy_set 中)

    print("issubset:", issubset)
    issuperset = copy_set.issuperset(intersection_set)  # copy_set是否是intersection_set的超集 (即是否包含 intersection_set 中的所有元素)
    print("issuperset:", issuperset)


    dict_data = {"a": 1, "b": 2}
    key_set = set(dict_data)  # 获取 key 的集合
    print("dict_data keys as set:", key_set)


    # 集合推导式 
    words = {"apple", "banana", "cat"}
    vowels = {"a", "e", "i", "o", "u"}
    # 生成一个新的集合,包含 words 中的所有包含元音字母的单词
    contains_vowel = {word for word in words if any(c in vowels for c in word)}
    print(contains_vowel)

结果

_list: [0, 1, 2, 3, 4, 5, 6, 7, 8, 8]
var_set: {0, 1, 2, 3, 4, 5, 6, 7, 8}
var_set after pop: {1, 2, 3, 4, 5, 6, 7, 8}
copy_set: {0, 1, 2, 3, 4, 5, 6, 7, 8}
var_set after discard 1: {2, 3, 4, 5, 6, 7, 8}
var_set after difference with copy_set: {0, 1}
var_set交集copy_set: {2, 3, 4, 5, 6, 7, 8}
var_set: {2, 3, 4, 5, 6, 7, 8} difference_set: {0, 1}
copy_set从集合中删除与 difference_set 中相同的元素 copy_set: {2, 3, 4, 5, 6, 7, 8}
var_set after add 9: {2, 3, 4, 5, 6, 7, 8, 9}
var_set更新集合为与 copy_set 的交集: {2, 3, 4, 5, 6, 7, 8}
—var_set: {2, 3, 4, 5, 6, 7, 8, 11} copy_set: {2, 3, 4, 5, 6, 7, 8}
==var_set与copy_set 并集: {2, 3, 4, 5, 6, 7, 8, 11}
----var_set: {2, 3, 4, 5, 6, 7, 8, 11} copy_set: {2, 3, 4, 5, 6, 7, 8}
===copy_set 更新集合,添加差集中的元素copy_set: {2, 3, 4, 5, 6, 7, 8, 11}
—var_set: {33, 2, 3, 4, 5, 6, 7, 8, 11} copy_set: {2, 3, 4, 5, 6, 7, 8, 11, 22}
=== var_set对称差集copy_set: {33, 22}
===var_set对称差集更新copy_set: {33, 22}
isdisjoint: False
----intersection_set: {2, 3, 4, 5, 6, 7, 8} copy_set: {2, 3, 4, 5, 6, 7, 8, 11, 22}
issubset: True
issuperset: True
dict_data keys as set: {‘a’, ‘b’}
{‘cat’, ‘banana’, ‘apple’}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐