>>> st = set('hello world')
#创建一个唯一字符的集合
>>> st
{' ', 'd', 'e', 'h', 'l', 'o', 'r', 'w'}
>>> type(st)
>>> set
>>> st = set(['关注', '点赞', '转发', '点赞', '点赞', '在看'])
>>> st
{'关注', '点赞', '转发', '在看'}
>>> st = {'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}
>>> st
{'关注', '点赞', '转发', ('在看', ('公众号', '数据STUDIO'))}
# 集合里面的元素必须是不可变数据类型, 和字典一样,不能出现任意可变数据类型
>>> st = {'关注', '点赞', '转发', ['在看', ('公众号', '数据STUDIO')]}
>>> st
----------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-35-2a70659a8621> in <module>
----> 1 st = {'关注', '点赞', '转发', ['在看', ('公众号', '数据STUDIO')]}
2 st
TypeError: unhashable type: 'list'
方法 | 说明 |
---|---|
set.add(elmnt) | 增加一个新元素到集合里,elmnt要添加的元素。 |
set.updata(set) | 把set中元素更新到原集合中,set可以是一个列表,一个元组,一个集合,如果是一个字典则增加的是键,这个过程自动去重。 |
可以通过add(新元素)
方法添加元素到set
中,但对于已经存在的值不会有效果。如果添加的元素在集合中已存在,则不执行任何操作。
>>> st = {'关注', '点赞', '转发', '在看'}
>>> st
{'关注', '点赞', '转发', '在看'}
>>> type(st)
set
>>> st.add('数据STUDIO')
>>> st
{'关注', '点赞', '转发', '在看', '数据STUDIO'}
update()
方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
>>> st = {'关注', '点赞', '转发', '在看'}
>>> st
{'关注', '点赞', '转发', '在看'}
>>> type(st)
set
#把列表里面的元素增加到集合中,这个过程自动去重
>>> st.update(['数据STUDIO', '数据STUDIO', '公众号'])
>>> st
{'关注', '点赞', '转发', '在看', '数据STUDIO', '公众号'}
#把元组里面的元素增加到集合中,这个过程自动去重
>>> st.update(('《数据STUDIO》', '<数据STUDIO>', '数据STUDIO'))
>>> st
{'关注', '点赞', '转发', '在看',
'数据STUDIO', '公众号', '《数据STUDIO》', '<数据STUDIO>'}
# 字典添加的是键
>>> st.update({1:'Python', 2:'机器学习'})
>>> st
{'关注', '点赞', '转发', '在看',
'数据STUDIO', '公众号', '《数据STUDIO》',
'<数据STUDIO>', 1, 2}
# 集合里面的元素添加到集合里
>>> st.update({'Python', '机器学习'})
>>> st
{'关注', '点赞', '转发', '在看',
'数据STUDIO', '公众号', '《数据STUDIO》',
'<数据STUDIO>', 1, 2, 'Python', '机器学习'}
方法 | 说明 |
---|---|
set.remove(item) | item -- 要移除的元素,删除集合中的指定元素 |
set.pop() | 随机的删除一个元素,并且返回这个删除的元素s |
set.clear() | 清空整个集合,剩下一个空集合 |
remove()
方法用于移除集合中的指定元素。
该方法不同于 discard()
方法,因为 remove()
方法在移除一个不存在的元素时会发生错误,而 discard()
方法不会。
>>> st = {'点赞', '转发', '在看', '未关注'}
>>> st
{'点赞', '转发', '在看', '未关注'}
>>> type(st)
set
>>> st.remove('未关注')
>>> st
{'点赞', '转发', '在看'}
# 没有需要删除的元素则报错
随机删除一个元素并且返回这个元素。
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}
>>> st.pop()
'点赞'
>>> st
{'转发', '在看', '关注'}
clear() 方法用于移除集合中的所有元素。
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}
>>> st.clear()
>>> st
set()
# 此处空集合与空字典有所区别,需注意
>>> dic = {1:1, 2:2}
>>> dic.clear()
>>> dic
{}
>>> type(dic)
dict
判断元素是否是集合中的元素
>>> st = {'点赞', '转发', '在看', '关注'}
>>> st
{'点赞', '转发', '在看', '关注'}
>>> '点赞' in st
True
set1 & set2 <==> set1.intersection(set2)
>>> set1 = set([1, 2, 3, 4, 5, 6])
>>> set2 = set([1, 4, 6, 9, 10, 11, 12, 23])
>>> set1
{1, 2, 3, 4, 5, 6}
>>> set2
{1, 4, 6, 9, 10, 11, 12, 23}
>>> set1 & set2
{1, 4, 6}
>>> set1.intersection(set2)
{1, 4, 6}
>>> set2.intersection(set1) # 都是等价的
{1, 4, 6}
set1 | set2 <==> set1.union(set2)
>>> set1 = set([1, 2, 3, 4, 5, 6])
>>> set2 = set([1, 4, 6, 9, 10, 11, 12, 23])
>>> set1
{1, 2, 3, 4, 5, 6}
>>> set2
{1, 4, 6, 9, 10, 11, 12, 23}
>>> set1 | set2
{1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 23}
>>> set1.union(set2) # 和上面等价
{1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 23}
运算符 | 功能 | 对应方法 |
---|---|---|
set1 & set2 | 交集 | set1.intersection(set2) |
set1 | set2 | 并集 | set1.union(set2) |
set1 - set2 | 差值 | set1.difference(set2) |
set1 ^ set2 | 对称差 | set1.symmetric_difference(set2) |
set1 <= set2 | 是否是set2的子集 | set1.issubset(set2) |
set1 >= set2 | 是否是set2的超集 | set1.isuperset(set2) |
set1 |= set2 | 用set2更新set1 | set1.update(set2) |