集合---元素之间不允许重复

209 阅读2分钟

一.概念

  1. 无序可变序列
  2. 形式:用{}作定界符
  3. 集合内的元素不允许重复
aset={1,2,3,4,5,1,1,1,1}
print(aset)    #输出结果:{1, 2, 3, 4, 5}
  1. 集合内只能包含数字、字符串、元组等不可变数据类型的数据,不能包含列表、字典、集合等
  2. 可哈希:不可变数据类型,数字、字符串、元组

二.字典的创建与删除

1.创建

  • a={1,3}
  • set([1,2,3,4,5,6,7]),
list1=[1,(2,3),4,'string',[5]]
set(list1)    #输出结果:异常,列表中存在不可哈希的数据类型
list1=[1,(2,3),4,'string']
print(set(list1))    #输出结果:{(2, 3), 1, 4, 'string'}
  • 集合推导式
set1={i for i in[1,(2,3),4,'string']}
print(set1)    #{(2, 3), 1, 4, 'string'}

2.增加

  • add()方法,若增加元素已存在则自动忽略,不会出现异常
  • update()合并另外一个集合到当前集合中,并自动去除重复元素

3.删除

  • clear()方法,清空整个集合
  • pop()方法,随机返回并删除一个集合元素,若集合为空则抛出异常
  • remove(value)方法,删除集合中特定的元素,若元素不存在则抛出异常
  • discard(value),删除一个特定元素,如果元素不存在则自动忽略

4.集合运算

内置函数len(),max(),min(),sum(),sorted(),map(),filter(),enumerate()等也适用于集合。另外,Python集合还支持数学意义上的交集、并集、差集等运算。

  • 交集 &或intersection()
  • 并集 |或union()
  • 差集 -或difference()
setA={1,2,3,4,5,6,7}
setB={1,3,5,7,9}
print(setA & setB)     #{1, 3, 5, 7}
print(setA | setB)     #{1, 2, 3, 4, 5, 6, 7, 9}
print(setA - setB)     #{2, 4, 6}
print(setA)            #{1, 2, 3, 4, 5, 6, 7}
print(setB)            #{1, 3, 5, 7, 9}

三.序列解包

1.序列解包就是Python允许一次给多个值赋值

a,b,c=1,2,3
(x,y,z)=(4,5,6)
x,y,z=(4,5,6)
(j,d,k)=[4,5,6]
m,n,q=map(str,range(3))
m,n,q=map(str,range(3))
print(m)       #0
print(n)       #1
print(q)       #2
print(type(m)) #<class 'str'>

2.使用序列解包可以很方便地同时遍历多个序列

key=['a','b','c']
values=(1,2,3)
for k,v in zip(key,values):
    print((k,v),end=" ")    #('a', 1) ('b', 2) ('c', 3)