第5章 变量类型-5.10 集合

张开发
2026/5/3 17:57:38 15 分钟阅读
第5章 变量类型-5.10 集合
5.10.1 创建集合在Python中集合分为可变集合和不可变集合。1.可变集合创建可变集合有2种方式一是通过使用大括号将元素包裹且元素之间使用逗号分隔二是通过使用set()函数该函数的参数为可迭代对象。注意可变集合中的元素不能为字典否则会产生语法错误。示例代码如下# 资源包\Code\chapter5\5.10\0569.py st1 {1, 6.66, name, None} # 创建可变集合输出结果为{None, 1, 6.66, name} print(st1) # type()函数用于返回数据类型可变集合的输出结果为class set print(type(st1)) # 创建可变集合参数为可迭代对象字符串 st2 set(abcdefg) print(st2) # 创建可变集合参数为可迭代对象列表 st3 set([1, 6.66, name, None]) print(st3) # 创建可变集合参数为可迭代对象集合 st4 set({1, 6.66, name, None}) print(st4) # 报错 st5 {1, 2, {name: xzd}} print(st5)2.不可变集合创建不可变集合可以通过使用frozenset()函数该函数的参数为可迭代对象。示例代码如下# 资源包\Code\chapter5\5.10\0570.py # 创建不可变集合参数为可迭代对象字符串 st1 frozenset(abcdefg) print(st1) # type()函数用于返回数据类型不可变集合的输出结果为class frozenset print(type(st1)) # 创建不可变集合参数为可迭代对象列表 st2 frozenset([1, 6.66, name, None]) print(st2) # 创建不可变集合参数为可迭代对象集合 st3 frozenset({1, 6.66, name, None}) print(st3)这里需要注意的是无论是创建创建空的可变集合或是空的不可变集合都必须使用set()函数或frozenset()函数因为{}表示的是空字典。示例代码如下# 资源包\Code\chapter5\5.10\0571.py # 数据类型为class set print(type(set())) # 数据类型为class frozenset print(type(frozenset())) # 数据类型为class dict print(type({}))5.10.2 访问集合中的元素在集合中无论是可变集合还是不可变集合都无法通过索引访问其元素只能通过for循环进行获取。示例代码如下# 资源包\Code\chapter5\5.10\0572.py st1 set({1, 6.66, name, None}) # 报错提示集合不能通过索引访问 print(st1[0]) st2 frozenset({1, 6.66, name, None}) # 报错提示集合不能通过索引访问 print(st2[0]) st3 set({1, 6.66, name, None}) for val1 in st3: print(val1) st4 frozenset({1, 6.66, name, None}) for val2 in st4: print(val2)5.10.3 集合的特性集合是一种无序且不重复的数据结构用于存储唯一的元素并支持数学集合的操作如交集、并集和差集等。示例代码如下# 资源包\Code\chapter5\5.10\0573.py st1 {1, name, 1, age, 6.66, name, None} # 输出结果为{1, age, 6.66, name, None} print(st1) st2 frozenset({1, name, 1, age, 6.66, name, None}) # 输出结果为frozenset({1, age, 6.66, name, None}) print(st2)此外由于不可变集合属于不可变的数据类型所以其元素是不允许被修改的即不可变集合不具有添加、删除和修改其内部元素的方法。5.10.4 集合的相关操作1.添加可以通过使用add()方法为可变集合添加元素如果添加的元素在集合中已存在则不执行任何操作。注意该方法无返回值但会修改原可变集合。其语法格式如下add(element)其中参数element表示待添加的元素。示例代码如下# 资源包\Code\chapter5\5.10\0574.py st {1, 6.66, name, None} st.add(Python) print(st)2.删除删除可变集合中的元素有3种方式1remove()方法。该方法可以删除可变集合中的指定元素如果删除一个不存在的元素时则该方法报错。注意该方法无返回值但会修改原集合。其语法格式如下remove(element)其中参数element表示待删除的元素。示例代码如下# 资源包\Code\chapter5\5.10\0575.py st {1, 6.66, name, None} st.remove(name) print(st) st.remove(100) # 报错删除不存在的元素 print(st)2discard()方法。该方法可以删除可变集合中的指定元素与remove()方法不同的是如果删除一个不存在的元素时该方法不会报错而是直接输出原可变集合。注意该方法无返回值但会修改原集合。其语法格式如下discard(element)其中参数element表示元素。示例代码如下# 资源包\Code\chapter5\5.10\0576.py st {1, 6.66, name, None} st.discard(name) print(st) st.discard(100) # 删除不存在的元素不会报错直接输出原集合 print(st)3pop()方法。该方法可以删除可变集合中的一个随机元素。注意该方法无返回值但会修改原集合。其语法格式如下pop()示例代码如下# 资源包\Code\chapter5\5.10\0577.py st {1, 6.66, name, None} st.pop() print(st)3.清空可以通过使用clear()方法清空可变集合。注意该方法无返回值但会修改原集合。其语法格式如下clear()示例代码如下# 资源包\Code\chapter5\5.10\0578.py st set({1, 6.66, name, None}) st.clear() print(st)4.复制可以通过使用copy()方法返回一个可变集合或不可变集合的浅复制。注意该方法返回浅复制之后的新集合不会修改原集合。其语法格式如下copy()示例代码如下# 资源包\Code\chapter5\5.10\0579.py st1 {1, 6.66, name, None} new_st1 st1.copy() st1.add(Python) print(st1) print(new_st1) st2 frozenset({1, 6.66, name, None}) new_st2 st2.copy() print(new_st2)5.10.5 集合推导式集合推导式提供了一种简明扼要的方法来创建可变集合。其语法格式如下{ 表达式 for语句 [, if 语句 [, for语句 ...] ] }集合推导式的结构是在一个大括号里包含一个表达式之后是一个for语句然后是0个或多个if语句或for语句最后在这个以if语句和for语句为上下文的表达式运行完成之后返回一个新的可变集合。其执行顺序为左边第二个语句是最外层依次往右进一层左边第一条语句是最后一层。示例代码如下# 资源包\Code\chapter5\5.10\0580.py # 集合推导式的方式 st1 {x * y for x in range(1, 5) if x 2 for y in range(1, 4) if y 3} # 输出结果为{8, 3, 4, 6} print(st1) # 集合推导式的执行顺序 st2 set() for x in range(1, 5): if x 2: for y in range(1, 4): if y 3: st2.add(x * y) # 输出结果同样为{8, 3, 4, 6} print(st2)

更多文章