ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集合

2022-01-11 12:34:32  阅读:124  来源: 互联网

标签:set alex 元素 update li 集合


集合(set)

  1. 集合分为:可变集合(set),不可变集合(frozenset);可变集合不可以作为字典的键或值,因为是不可哈希的(则是因为可变的);不可变集合可以。

  2. 集合的创建:

(1).可变集合:

第一种方法:使用set进行创建

>>> a=set("hello")

>>> a

>>>{'o', 'h', 'l', 'e'} #集合会将重复的元素进行自动去重,只保留一个,此处的L则只保留一个,且元素都会打散,无序的。所以没有索引,若想拿到这个里面的元素,可以使用for循环获取

第二种方法:a={"hello","nihao"}

(2).不可变集合:

a=frozenset("hello")

 

  1. 集合具有去重作用,比如一个列表有重名的,只需保留不重名的,则可使用集合

a=["babu","baby","baby"]

a1=set(a)进行去重以后再转换为列表

a=list(a1)

  1. 集合

li=[[1,2],1,"hale"]

a=set(li) #TypeError: unhashable type: 'list',原因为【1,2】为可变的列表,是不可哈希的,所以会报错,若该列表为字典,数字,字符串,则不会报错

>>> dit={li:"1"}

TypeError: unhashable type: 'list'

则不可以作为字典的键

  1. 访问集合:

因为集合是无序的,且没有索引,则无法通过切片的方式获取元素,只能通过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'}

  1. 集合删除

  1. remove()

    1. 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()

  1. a=set("alex")

b=set("xfff")

a.symmetric_difference(b)

使用“^”代替:即a^b

 

 

 

 

 

标签:set,alex,元素,update,li,集合
来源: https://www.cnblogs.com/ainiforever20220101/p/15787765.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有