码迷,mamicode.com
首页 > 编程语言 > 详细

Python数据类型-集合

时间:2018-04-29 11:51:25      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:card   att   int   方法   add   排列   png   span   pre   

0、什么是集合?

集合是一个无序的,不重复的数据组合,它的主要作用如下:

去重,把一个列表变成集合,就自动去重了

关系测试,测试两组数据之前的交集、差集、并集等关系


集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

集合元素(set elements):组成集合的成员(不可重复)

集合对象是一组无序排列可哈希(不可变,类似字典的键)的值:集合成员可以做字典的键


集合分类:可变集合、不可变集合

可变集合(set):可添加和删除元素,非可哈希的,不能作为字典的键,也不能做其他集合的元素

不可变集合(frozenset):与上面恰恰相反


li=[[1,2],a,b]
s =set(li) # TypeError: unhashable type: ‘list‘
print(s)


a=set(alex li a)  #有多个 a
print(a)
{ , l, i, a, x, e}    # 集合会把重复的去掉,并无序的打印出来

b=[aaa,bbb,aaa]
s=set(b)
print(s)
{aaa, bbb}      # 列表里有重复,会把重复的去掉



1、创建集合

由于集合没有自己的语法格式,只能通过集合的方法 set() frozenset() 创建,或者 {} 来创建

s1 = set(alvin)
 
s2= frozenset(yuan)  # 不可变集合

s3={1,2,3}


print(s1,type(s1))  #{‘l‘, ‘v‘, ‘i‘, ‘a‘, ‘n‘} <class ‘set‘>
print(s2,type(s2))  #frozenset({‘n‘, ‘y‘, ‘a‘, ‘u‘}) <class ‘frozenset‘>


2、访问集合

由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

s1 = set(alvin)
print(a in s1)
print(b in s1)
#s1[1]  #TypeError: ‘set‘ object does not support indexing
 
for i in s1:
    print(i)
#    
# True
# False
# v
# n
# l
# i
# a



3、更新集合

可使用以下内建方法来更新:

set.add():增

set.remove():删

set.update():改

注意:只有可变集合才能更新:

# s1 = frozenset(‘alvin‘)
# s1.add(0)  #AttributeError: ‘frozenset‘ object has no attribute ‘add‘
 
s2=set(alvin)
s2.add(mm)   # ‘mm’ 会作为一个整体存入
print(s2)  #{‘mm‘, ‘l‘, ‘n‘, ‘a‘, ‘i‘, ‘v‘}
 
s2.update(HO)# 添加多个元素,把 HO 拆开,作为单个元素添加进去,如果有重复的,会去重
print(s2)  #{‘mm‘, ‘l‘, ‘n‘, ‘a‘, ‘i‘, ‘H‘, ‘O‘, ‘v‘}

s2.update([12,alex,eee,alvin])  # 列表里面,元素是一个整体,
print(s2) # {‘l‘, ‘n‘, ‘alvin‘, ‘a‘, 12, ‘i‘, ‘alex‘, ‘v‘, ‘eee‘} 

s2.remove(l)   # 指定删除,当值不存在时,会报错
print(s2)  #{‘mm‘, ‘n‘, ‘a‘, ‘i‘, ‘H‘, ‘O‘, ‘v‘}
s2.discard(vvvv) # 指定删除,当值不存在时,不会报错

s2.pop()   # 随机删除一个元素
s2.clear()  # 清空集合
del s2:删除集合本身



4、集合类型操作符

1 in ,not in:判断某元素是否在集合内

2 集合等价与不等价(==, !=)

3 子集、超集

4 print(a.isdisjoint(b)),两个集合没有任何关联就返回为真

技术分享图片

Python数据类型-集合

标签:card   att   int   方法   add   排列   png   span   pre   

原文地址:https://www.cnblogs.com/tootooman/p/8970463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!