布景及其制作 用Python设置 可以定义为项目的集合。在Python中,这些基本上用于包括成员身份测试和消除重复条目。本文中使用的数据结构是 散列 ,这是一种在O(1)中平均执行插入、删除和遍历的常用技术。哈希表上的操作与链表类似。python中的集合是无序列表,删除了重复的元素。
集合的基本方法是 :- 创建集合 通过Python()创建函数集。将创建一个空列表。请注意,空集不能通过{}创建,它会创建字典。
检查项目是否在: 该操作的时间复杂度平均为O(1)。然而,在最坏的情况下,它可以变成O(n)。
添加元素 :-在集合中插入是通过集合完成的。add()函数,其中创建了一个适当的记录值以存储在哈希表中。与检查项目相同,即平均为O(1)。然而,在最坏的情况下,它可以变成O(n)。
协会 :-可以使用union()函数或|运算符合并两个集合。如果两个元素都被访问,并在同一个哈希表上执行合并操作,则两个元素都被删除。其时间复杂度为O(len(s1)+len(s2)),其中s1和s2是需要进行并集的两个集合。
十字路口 :-这可以通过intersection()或&operator完成。选择公共元素。它们类似于对哈希列表进行迭代,并在两个表上组合相同的值。其时间复杂度为O(min(len(s1),len(s2)),其中s1和s2是需要进行并集的两个集合。
差别 :-找出不同集合之间的差异。类似于在链表中查找差异。这是通过差分()或–运算符完成的。求差s1–s2的时间复杂度为O(len(s1))
对称差分 :-在两个集合中查找除公共元素之外的元素。^使用运算符。s1^s2的时间复杂度为O(len(s1))
对称差分更新 :返回包含两个集合的对称差的新集合。时间复杂度为O(len(s2))
清楚的 :-清除集合或哈希表。
时间复杂度来源: Python维基
如果同一索引位置存在多个值,则该值将附加到该索引位置,以形成一个链表。在中,CPython集合是使用带有虚拟变量的字典实现的,其中关键是成员集合对时间复杂度进行了更大的优化。
设置实现:- 在单个哈希表上执行多个操作的集合:-
例如:
# empty set, avoid using {} in creating set or dictionary is created x = set() # set {'e', 'h', 'l', 'o'} is created in unordered way B = set('hello') # set{'a', 'c', 'd', 'b', 'e', 'f', 'g'} is created A = set('abcdefg') # set{'a', 'b', 'h', 'c', 'd', 'e', 'f', 'g'} A.add('h') fruit ={'orange', 'banana', 'pear', 'apple'} # True fast membership testing in sets 'pear' in fruit 'mango' in fruit # False A == B # A is equivalent to B A != B # A is not equivalent to B A <= B # A is subset of B A <B>= B A > B # A is proper superset of B A | B # the union of A and B A & B # the intersection of A and B A - B # the set of elements in A but not B A ˆ B # the symmetric difference a = {x for x in A if x not in 'abc'} # Set Comprehension