python基础--集合
发布时间:2020-12-20 10:25:58 所属栏目:Python 来源:网络整理
导读:集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 set 可变集合,set里可以传列表 字典 字符串 集合 frozenset 不可变集合 定义:s={}
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set 可变集合,set里可以传列表 字典 字符串 集合
frozenset 不可变集合
定义:s={}/s=set() ? ?
>>> s=set([1,2,3,1,2])? ?
#集合里面传列表,另外集合有去重功能
>>> s {1,3} >>> s={4,5,6} >>> type(s) <class ‘set‘> >>> s=set({1:2,3:4})? #集合里面传字典 >>> s {1,3} >>> s=set("abcabc")? #集合里面传字符串 >>> s {‘a‘,‘c‘,‘b‘} >>>
>>> s=set({1,4})? ?
#集合里面传集合
>>> s {1,4} >>>
?
?#添加元素
#set是无序的? 添加的内容不固定顺序? 不一定加在哪个位置
>>> s.
add("fgh")? ?
#add把内容当做一个字符串来添加
>>> s {1,4,‘fgh‘} >>> s. update("fgh")? ? #update把内容拆开添加 >>> s {1,‘h‘,‘g‘,‘f‘,‘fgh‘} >>>
?
#移除元素
>>> s
{‘l‘,‘o‘,‘e‘} >>> s. remove("e")? ?#将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误 >>> s {‘l‘,‘o‘} >>>
>>> s.
discard("o")? #也是移除集合中的元素,且如果元素不存在,不会发生错误
>>> s {‘l‘} >>> s. pop()? ?#返回并删除 ‘l‘ >>> s set() >>>
?
?
#集合可以用len求长度? copy复制? ?clear清空
>>> s=set("hello")
>>> s {‘l‘,‘e‘} >>>? len(s) 4 >>> s1=s. copy() #操作copy的内容两个集合互不影响 >>> s1 {‘l‘,‘e‘} >>> s {‘l‘,‘e‘} >>> s1. remove("e") >>> s1 {‘l‘,‘o‘} >>> s {‘l‘,‘e‘} >>> s. clear() >>> s set() >>>
?
?
?
#遍历(set不能按位置遍历)
>>>?for?i?in?s:
...?????print(i) ... h fgh a g c f
?
>>>?for?id,value?in?enumerate(s):
...?????print(id,value) ... 0?h 1?fgh 2?a 3?g 4?c 5?f
?
?
#set可以跟list和tuple互转
>>> s
{‘l‘,‘o‘} >>> list(s) [‘l‘,‘o‘] >>> tuple(s) (‘l‘,‘o‘) >>>?set(s) {‘l‘,‘o‘} >>>
?
?
?
#求集合
>>> s1
{‘l‘,‘o‘} >>> s=set("ho") >>> s {‘h‘,‘o‘} >>> s1 &s #&交集 {‘h‘,‘o‘} >>> s1? |s #|并集 {‘h‘,‘l‘,‘o‘} >>> s1 -s #-差集 {‘l‘} >>>?
?
?
?
?用集合实现第一题:
>>>?import?random
>>>?a=?list(range(1,101)) >>>?a=set(a) >>>?rand_num?=random.randint(0,99) >>>?rand_num 44 >>>?b=list(range(1,101))[:rand_num]+list(range(1,101)[rand_num+1:]) >>>?b [1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20,?21,?22, 23,?24,?25,?26,?27,?28,?29,?30,?31,?32,?33,?34,?35,?36,?37,?38,?39,?40,?41,?42, 43,?44,?46,?47,?48,?49,?50,?51,?52,?53,?54,?55,?56,?57,?58,?59,?60,?61,?62,?63, 64,?65,?66,?67,?68,?69,?70,?71,?72,?73,?74,?75,?76,?77,?78,?79,?80,?81,?82,?83, 84,?85,?86,?87,?88,?89,?90,?91,?92,?93,?94,?95,?96,?97,?98,?99,?100] >>>?len(b) 99
?
?
用函数计算集合:
>>> s={1,3}
?
?
?
集合大于? 等于? 比的是个数
>>>?{1}>{1}
False >>>?{1}=={1} True >>>?{1,2}>{1} True >>>?{1,2}>{1}
?
?
包含和不包含
>>> {2,4}>{5}
False
>>>?{2,4}>{2}
True
?
?
超集? 子集 ? 完全相等集合 函数
>>>?{2}.
issubset({1,3}) #子集,判断指定集合({2})是否为该方法参数集合({1,3})的子集
True >>>?{2}. issuperset({1,3}) #包含,判断该方法的参数集合是否为指定集合的子集,判断{1,3}是否是{2}的子集 False >>>?{1,4}.issuperset({1,3}) True
?
?
in ,not in 判断在不在
>>>?1?in?{1,3}
True >>>?22?not?in?{1,3} True
?
?
?
不可变集合
不可变集合,除了内容不能更改外,其他功能及操作跟可变集合set一样
a=frozenset([1,3])
a.pop()
?
>>> a=frozenset([1,3])
>>> a.pop() #当改变不可变集合里面的内容时,会报错
Traceback (most recent call last):
? File "<stdin>",line 1,in <module>
AttributeError: ‘frozenset‘ object has no attribute ‘pop‘
>>>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |