Python的集合介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的集合介绍相关的知识,希望对你有一定的参考价值。

参考技术A 和列表类似,集合也是一个数据集合,其也不要求元素的类型一致。但是集合有下面两个特点:

•集合内元素唯一。如不可以用1、2、1、1组成集合,因为其包含重复的1。

•集合是无序的,添加元素时不能指定位置,删除元素时也不能通过指定位置,只能通过指定值。当然也不能通过位置来定位某个元素。

1、创建集合

我们可以从列表创建集合,将列表中的元素都加入到集合中,如果有重复的元素就仅保留一个。

a = set([1, 1, 3])

print(a)#输出结果:set([1, 3])     

也可以从元组、字典和其他集合构建集合。比如:

a = set((0, 1, 2, 3, 3, 2))   

使用的是字典的键来构建集合,字典的值没有被使用到,比如:

a = set(1:10, 2:20, 3:30)

从字符串构建集合,其每个字符都成为集合的一个元素,比如:

a = set("abcdefabc") 

输出结果:a='c', 'e', 'f', 'b', 'd', 'a'

另外一个集合构建集合,比如:

a = set([1, 2, 3]) 

b = set(a)  输出结果:b=1, 2, 3

当然也可以构造一个空的集合,使用的方法是set()。空集合没有任何元素,比如:

a = set()

1.添加元——add(值)

该函数只能添加一个元素。

如果添加的元素已经在集合中存在,那么不会发生任何变化。

2.扔掉元素——discard(值)

该函数删除集合中指定的值对应的元素。

如果指定值在集合中不存在,则不做任何操作。

3.删除指定值——remove(值)

该函数和discard()的不同之处在于,如果指定的值在集合中不存在,会抛出异常。

4.清空所有元素——clear()

该函数扔掉所有的元素。执行完该函数后,该集合将变成一个空的集合。

a.clear()

5.删除第一个元素——pop()

如果集合中有元素,则返回值为删除掉的元素的值。

如果集合为空,则抛出异常。

6.得到差集——difference(集合对象)

该函数返回一个新的集合,该集合包含所有属于a而不属于b的元素,如图所示。该操作不会改变原始集合a或者b的内容。

7.差集操作符(-)

该操作符和difference()类似,返回一个新的集合,该集合包含所有属于a而不属于b的元素。该操作不会改变原始输入集合a或者b的内容。

8.从集合中删除另一个集合中存在的元素——difference_update(集合对象)

该函数和difference()的不同是操作数a会被修改,而且没有返回值。

9.得到两个集合的交集——intersection(集合)

该函数返回所有的同时属于集合a和集合b的元素组成的集合,即返回的是一个集合,该集合的所有元素都同时属于集合a和b,如图所示。输入集合a和b在该过程中没有发生任何改变。

10.交集操作符(&)

该操作符和intersection()的效果是一样的。

11.删除集合a中所有不属于集合b的元素——intersection_update(集合)

该函数也是求交集,与intersection()不同的是其修改原始输入集合,并且没有返回值。这也是为何该接口函数后面带有update字样,因为其更新了原来的输入集合。

12.是否存在交集——isdisjoint()

该函数判断是否存在这样的元素,其同时属于集合a和集合b。如果存在这样的元素,返回False;否则返回True。

13.并集——union(集合a,集合b)

该函数返回一个新的集合,该集合的元素要么属于输入集合a要么属于集合b。该操作不修改作为输入的两个集合a和b。如图表示该函数返回的集合的内容。

14.并集操作符(|)

该操作符和union()的效果是一样的。其返回一个并集,并且不修改输入集合的内容。

15.添加属于b而不属于a的元素——update()

该函数在集合a中添加属于b而不属于a的所有元素。该操作和union()不同的是,其修改了输入集合a,并且没有返回值。

16.外集——symmetric_difference()

外集就是由只属于集合a或者只属于集合b的元素组成的集合,如图所示。该操作返回一个新的集合,并且不修改原来的输入集合a和b。

17.外集操作符(^)

该操作符和symmetric_difference()的效果是一样的,也是返回一个新的集合,并且不会修改输入的集合a或者b。

18.a和b的并集减去a和b的交集——symmetric_difference_update()

该函数和symmetric_difference()的区别是,其修改了集合a的值,并且没有返回值。

19.是指定集合的子集吗——issubset()

a是b的子集就是说集合a的所有元素都属于集合b。

如果a等于b,那么a和b互为子集。

20.是指定集合的超集吗——issuperset()

a是b的超集合就是说集合b中的所有元素都属于集合a。

如果a是b的超集,那么b就是a的子集。

如果a等于b,那么它们互为子集,同时也互为超集。

python基础---setcollections介绍

1.set(集合)

  set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

  集合和我们数学中集合的概念是一样的,也有交集、并集、差集、对称差集等概念。

  1.1定义集合需要提供一个列表作为参数,也可以不传参数创建一个空集合

>>> s = set([1, 2, 2, 3])
>>> s
{1, 2, 3} # 可以看到在创建集合对象对过程中已经为我们把重复的元素剔除掉了
>>> s = set()
set()

  

  1.2set常用方法

#python3.x
dir(set)
#[‘__and__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__iand__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__ior__‘, ‘__isub__‘, ‘__iter__‘, ‘__ixor__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__or__‘, ‘__rand__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__ror__‘, ‘__rsub__‘, ‘__rxor__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__sub__‘, ‘__subclasshook__‘, ‘__xor__‘, ‘add‘, ‘clear‘, ‘copy‘, ‘difference‘, ‘difference_update‘, ‘discard‘, ‘intersection‘, ‘intersection_update‘, ‘isdisjoint‘, ‘issubset‘, ‘issuperset‘, ‘pop‘, ‘remove‘, ‘symmetric_difference‘, ‘symmetric_difference_update‘, ‘union‘, ‘update‘]

 

技术分享图片
s = set([1, 2, 3])
s.add(4)
print(s)

"""
         添加一个新的元素,如果该元素已经存在,将不会有任何操作
         Add an element to a set.
         
         This has no effect if the element is already present.
"""

#输出{1, 2, 3, 4}
add 添加元素
技术分享图片
s = set([1, 2, 3])
s.clear()
print(s)

""" 
         删除所有元素
         return:None
         Remove all elements from this set. 
"""

#输出set()
clear 清空集合
技术分享图片
A = set([1, 2, 3])
B = set([2, 3, 4])
print(A.difference(B))

"""
         求当前差集和另一个集合的差集
         return:差集
         Return the difference of two or more sets as a new set.
         
         (i.e. all elements that are in this set but not the others.)
 """

#输出{1}
difference 差集
技术分享图片
A = set([1, 2, 3])
B = set([2, 3, 4])
A.difference_update(B)
print(A)

"""
         从当前集合中删除所有另一个集合中存在的元素
         其实就相当于将difference返回的值又付给了当前集合
         可以理解为A = A - B,或者A -= B
         Remove all elements of another set from this set. 
"""

#输出集合A结果为{1}
difference_update 差集
技术分享图片
A = set([1, 2, 3])
A.discard(2)
print(A)    #输出{1, 3}
A.discard(4)
print(A)     #输出{1, 3}

"""
         如果一个集合中存在这个元素则删除,否则什么都不做
         Remove an element from a set if it is a member.
         
         If the element is not a member, do nothing.
"""
discard 从集合中删除元素

 

以上是关于Python的集合介绍的主要内容,如果未能解决你的问题,请参考以下文章

Python基础数据类型之set集合

数据分析系列 之python中集合内容介绍

Python中 collections模块的详细用法介绍

Python使用redis介绍

Python数据类型介绍

python内置模块collections介绍