集合(set)
-
集合分为:可变集合(set),不可变集合(frozenset);可变集合不可以作为字典的键或值,因为是不可哈希的(则是因为可变的);不可变集合可以。
-
集合的创建:
(1).可变集合:
第一种方法:使用set进行创建
>>> a=set("hello")
>>> a
>>>{'o', 'h', 'l', 'e'} #集合会将重复的元素进行自动去重,只保留一个,此处的L则只保留一个,且元素都会打散,无序的。所以没有索引,若想拿到这个里面的元素,可以使用for循环获取
第二种方法:a={"hello","nihao"}
(2).不可变集合:
a=frozenset("hello")
-
集合具有去重作用,比如一个列表有重名的,只需保留不重名的,则可使用集合
a=["babu","baby","baby"]
a1=set(a)进行去重以后再转换为列表
a=list(a1)
-
集合
li=[[1,2],1,"hale"]
a=set(li) #TypeError: unhashable type: 'list',原因为【1,2】为可变的列表,是不可哈希的,所以会报错,若该列表为字典,数字,字符串,则不会报错
>>> dit={li:"1"}
TypeError: unhashable type: 'list'
则不可以作为字典的键
-
访问集合:
因为集合是无序的,且没有索引,则无法通过切片的方式获取元素,只能通过for循环遍历获取元素。
可以通过in not in来判断元素是否在集合内
6 add(),update():
add():向集合添加元素
>>li={1,2,3,"ha"}
>> li.add("nih")
{1,2,3,"ha","nih"}
add 将添加的元素整体添加到集合
>>li.update("uop")
>>li
{1,2,3,"ha","nih","u","o","p"}
update 将元素拆分进行添加到集合
诸如集合update(【列表】)
,会将列表里的元素添加进集合,每个元素作为整体添加进去,不会进行拆分
a={'p', 1, 2, 'u', 'o', 's', 'hah', 'hale'}
>>> a.update([5,"jkl"])
>>> a
{'p', 1, 2, 'u', 5, 'o', 's', 'hah', 'jkl', 'hale'}
-
集合删除
-
remove()
-
remove("hah") 则进行删除掉该元素
2.pop() 随机删除元素,并返回该元素
>>> a.pop()
'p'
7.操作
等于,不等于:
set("alex")==set("alexxexexexexe") 为ture
包含:<
set("alex")<set("alexfff") 为ture
set("alex")<set("alex") 为fasle
or取交集:将共同取出来,方法名称为intersection(); a.intersection(b)
set("alex") or set("xfff")
输出:{'x'}
使用“&”代替:即a&b
联合:用符号 |表示求得是并集,方法名用union(),如a.uinion(b)
使用“|”代替:即a|b
差集:其中一个有,另一个集合没有的元素,可以使用difference()
a=set("alex")
b=set("xfff")
a.diffrence(b) 则输出的{'e', 'l', 'a'}
使用“-”代替:即a-b
反向交集:将两个集合中不是共同的元素,取出来
symmetric_difference()
-
a=set("alex")
b=set("xfff")
a.symmetric_difference(b)
使用“^”代替:即a^b