Python编程学习11:set集合和frozenset详解

python列表 list 详解

pyton元组 tuple 详解

python字典 dict 详解


1. 创建集合

    注意a = {}创建的是字典,只有里面放入元素,用逗号隔开才是集合,也可以使用set()进行强制转换创建集合。

a = {}
b = {1,2,3,5,8}
c = set({})
d = set([1,2,3,5,8])
print(type(a))
print(type(b))
print(type(c))
print(type(d))

<class 'dict'>
<class 'set'>
<class 'set'>
<class 'set'>

   集合的元素是不重复的

d = {1,2,3,2,1,5,6,3,8}
print(d)
{1, 2, 3, 5, 6, 8}

2. 访问集合:集合是无序的,不能通过索引访问集合元素

for i in b:
    print(i)

1
2
3
5
8


3. 修改集合: set.add(item) ,set.update(item) 和 set.remove(item)

add()方法将item作为一个整体加入集合,update()方法则先将item进行元素拆分,再将拆分后的个体分别加入结合。

d = {1,2,3,2,1,5,6,3,8}
print(d)
{1, 2, 3, 5, 6, 8}

d.add('python')
print(d)
{1, 2, 3, 5, 6, 8, 'python'}

d.update('num')
print(d)
{1, 2, 3, 5, 6, 8, 'python', 'u', 'n', 'm'}

注意:set中不能添加unhashable对象,如可变容器列表,字典等。直接使用add()添加列表会出错。

d.update([0,-1,-2])
print(d)
{0, 1, 2, 3, 5, 6, 8, 'python', 'u', 'n', 'm', -2, -1}

d.add([0,-1,-2])
print(d)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-456b6a4a77dd> in <module>()
----> 1 d.add([0,-1,-2])
      2 print(d)

TypeError: unhashable type: 'list'
d.remove(8)
print(d)
{0, 1, 2, 3, 5, 6, 'python', 'u', 'n', 'm', -2, -1}


4. 其他操作:求交,并,差集

(1) 求交集 &

set1 = {1,2,3,5,8}
set2 = {2,5,7,9,0}
set3 = set1 & set2
print(set3)
{2, 5}

(2) 求并集 |

set4 = set1 | set2
print(set4)
{0, 1, 2, 3, 5, 7, 8, 9}

(3)求差集 -: set1-set2表示求set1集合中去掉在set2中存在的元素,所获得的差集。

set5 = set1 - set2
print(set5)
set6 = set2 - set1
print(set6)

{8, 1, 3}
{0, 9, 7}

 (4) 与非操作^:set1^set2表示求只在set1或者只在set2中出现的元素组成的集合(把在两个集合中均出现的元素去掉)

set1^set2
{0, 1, 3, 7, 8, 9}


5. frozenset的使用:  frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

set8 = frozenset({1,2,3,5,8})
print(set8)
frozenset({1, 2, 3, 5, 8})

set8.add(10)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-47-fd34a66385e9> in <module>()
----> 1 set8.add(10)

AttributeError: 'frozenset' object has no attribute 'add'


猜你喜欢

转载自blog.csdn.net/zhuzuwei/article/details/80604053