python 的集合

set  的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的 

set 的创建

s = set ('alex li')
print(s)

表现形式;去重   
{'e', 'i', ' ', 'l', 'a', 'x'}

set集合去重

sy = ['cx','chenxi','cx']
print(sy)
print(set(sy))


['cx', 'chenxi', 'cx']
{'chenxi', 'cx'}

  set 去重并查看数据类型

sy = ['cx','chenxi','cx']
print(sy)
print(set(sy),type(set(sy)))




{'i', 'a', 'e', 'x', ' ', 'l'}
['cx', 'chenxi', 'cx']
{'chenxi', 'cx'} <class 'set'>

  set 把不同的元素组合到一起,但元素的值必须不能变化

li = [[1,2],3,'tyuio']
a = set(li)
print(a)



Traceback (most recent call last):
  File "D:/python/map.py", line 308, in <module>
    a = set(li)
TypeError: unhashable type: 'list'

  set集合分为可变集合和非可变集合;创建方式

s1 = set('alvin')   # 可变

s2 = frozenset('yuan')   #不可变
print(s1,type(s1))
print(s2,type(s2))



测试
{'i', 'v', 'l', 'a', 'n'} <class 'set'>
frozenset({'n', 'y', 'u', 'a'}) <class 'frozenset'>

  集合的访问与判断集合里是否存在某元素

s1 =set('alvin')
print('a' in s1)    #判断a元素是否在集合里存在;存在为Ture,不存在False
print('b' in s1)
for i in s1:
    print(i)




True
False
a
l
n
i
v

  集合里添加单个元素

def df():   #查看元素内容的函数
    # print('a' in s1)  # 判断a元素是否在集合里存在;存在为Ture,不存在False
    # print('b' in s1)
    print("********************************")
    for i in s1:
        print(i)
    print('\n---------\n')

a =[1,5,2,"wertayuio",6,5]
s1 =set(a)
df()
s1.add("wsd")   #在元素里添加一个元素
df()



False
False
********************************
1
2
wertayuio
5
6
---------
False
False
********************************
1
wertayuio
5
6
---------

  更新(添加多个元素)元素

s1.update("ops2") #作为一个序列添元素,如果重复只添加一个
df()
1
2
5
6
wertayuio
---------

1
2
5
6
p
wertayuio
o
s
2
---------

  更新(添加多个元素)元素

s1.update([12,'wwww'])  #如果列表只更新添加两个
df()





测试
D:\pyth\python.exe D:/python/map.py
wertayuio
1
2
5
6
---------

wertayuio
1
2
5
6
12
wwww
---------

  删除集合指定元素操作

s1.remove(2) #删除指定的元素操作
df()



1
2
5
6
wertayuio
---------

1
5
6
wertayuio
---------

  随机删除操作

print(s1)
s1.pop()
print(s1)



测试
{1, 2, 5, 6, 'wertayuio'}
{2, 5, 6, 'wertayuio'}

  清空集合内容

print(s1)
s1.clear()  #清空
print(s1)

{1, 2, 'wertayuio', 5, 6}
set()

  判断两个集合是否相同

s = set("chenxi")
s1 = set("chenxixi")
print(s==s1)   #判断两个集合是否相等,相等为True




True

  判断集合1是否被集合2 包含

print(set("qwert")<set("qwertyuiop"))  #判断后者集合是否包含前者



True

  集合and与or

print(set("12345") or set("567890"))  #打印前面的set集合
print(set("12345") and set("567890")) # 打印后面的集合



{'2', '4', '5', '1', '3'}
{'8', '0', '5', '6', '9', '7'}

  集合的交集与并集

s1 = set("123456")
s2 = set("456789")
print(s2.intersection(s1))  #取交集;两个集合共有的元素
print(s2.union(s1)) #取并集,指示取两个集合全部的元素并去重
print(s1 | s2)  #求并集的另一方法

{'5', '4', '6'}
{'7', '8', '5', '3', '2', '4', '1', '9', '6'}

{'7', '8', '5', '3', '2', '4', '1', '9', '6'}

  取集合的差集

s1 = set("123456")
s2 = set("456789")

print(s2.difference(s1)) #取s2里有的,s1里没有的元素

print(s1.difference(s2))  # 取s1里有的,s2里没有的元素
print(s1.symmetric_difference(s2)) #取对称差集
{'7', '8', '9'}
{'1', '3', '2'}
{'7', '1', '9', '2', '8', '3'}

  

  

猜你喜欢

转载自www.cnblogs.com/rdchenxi/p/12036967.html