Python 集合

Python 集合

读书之法,在循序而渐进,熟读而精思。——朱熹

集合的概念

  • 无序

  • 不能重复

集合中各元素间是无序的,相同元素在集合中唯一存在.即集合是无序组合,它没有索引和位置的概念,但可变集合中的元素是可以动态添加或者删除的

集合的类型

  • 可变集合 set

  • 不可变集合 frozenset

set()函数

可以将其他的组合数据类型转变成可变集合类型(或将不可变的集合类型 frozenset 转变为可变的集合类型 set),返回一个无重复元素且排序任意的可变集合

语法

  • set

  • 这里注意不能直接使用{}因为{}生成的是字典,而不是集合类型


set()

实例化


s1 = set() # 创建一个空的集合

result1 = [1.23,'a'] #列表

result2 = {'name':'a','sex':'男'} # 字典类型

result3 = (1,2,'b') # 元祖类型

result4 = "厉害了,我的国"  # 字符串


s2 = set(result1)

s3 = set(result2)

s4 = set(result3)

s5 = set(result4)

print(s1)

print(s2)

print(s3)

print(s4)

print(s5)
  • 运行的结果

对象的话 它只会保存属性


set()
{1.23, 'a'}
{'name', 'sex'}
{1, 2, 'b'}
{'国', ',', '我', '的', '了', '厉', '害'}

不可变集合 frozenset()里面的元素不可变


c1 = frozenset()  # 一个空的不可变集合,该集合不能加任何元素

c2 = frozenset("1,2,3")  # 该集合只能这三个元素不能改变

print(type(c1))

print(c2)

# 结果

# <class 'frozenset'>

# frozenset({'2', '3', ',', '1'})

集合函数

add()函数

如果集合中不存在元素 X,就将元素 x 添加到集合中去

语法


s.add(x)

实例化


s= {1,2,'a'}

s.add("ab") # 将ab添加到集合中

s.add(1) # 将1 添加到集合中

s.add('z') #将z添加到集合中

print(s)
  • 结果

{1, 2, 'z', 'a', 'ab'}

clear 函数

删除集合 s 中所有的元素


s= {1,2,3,'a','b'}

s.clear()

print(s)
  • 结果

set()

copy()函数

  • 复制一个新的集合

  • s.copy()


result1 = {1, 2, 3, 'a', 'b'}

result2 = result1.copy()

result2.add('d')

print(result2)

print(result1)
  • 结果

{'b', 1, 2, 3, 'd', 'a'}

{1, 2, 3, 'a', 'b'}

discard() 函数

移除集合中指定的 value 元素,若 value 存在,则移除,不存在也不报错


result1 = {1, 2, 3, 'a', 'b'}

result1.discard('a')

result1.discard('e')

print(result1)
  • 结果

{1, 2, 3, 'b'}

remove() 函数

移除集合中指定的 value 元素,若 value 存在,则移除,不存在则报错


result1 = {1, 2, 3, 'a', 'b'}

result1.discard('a')

result1.discard('e')

print(result1)

# 结果报错

pop 函数

移除集合中一个随机元素,若集合为空则报错


result1 = {1, 2, 3, 'a', 'b'}

result1.pop()

print(result1)

# 结果

# {1,3,'a','b'}

len 函数

计算集合的个数


str1 = set('abccddadada')

length = len(str1)

print(length)

# 结果

# 4

in 判断是否在里面


str = set('abccddadada')
result = 'a' in str
print(result)
  • 结果

True

两个集合之间的操作

  • 取差集 (a 包含而 b 不包含)

str1 = set('abccddadada')
str2 = set('bbbcde')
result = str1-str2
print(result)

# 结果
# {'a'}
  • 取并集 a | b

str1 = set('abccddadada')
str2 = set('bbbcde')
result = str1 | str2
print(result)

# 结果
# {'a','b','c','d','e'}
  • 取交集 a&b

str1 = set('abccddadada')
str2 = set('bbbcde')
result = str1 & str2
print(result)

# 结果
# {'c','b','d'}
  • 不同时包含 a 和 b 的元素(b 中 a 没有的元素,a 中 b 没有的元素)

str1 = set('abccddadada')
str2 = set('bbbcde')
result = str1 ^ str2
print(result)

# 结果
# {'e','a'}

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录