第八章、Python数据类型(set集合)

9、集合(set)

集合创建用花括号 { } 或者 set() 函数。

注意:

    创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

   集合中的元素无序,不可重复。

   不推荐使用花括号{}创建集合,因为Python难以分辨是字典还是集合

   set()函数可以创建一个无序不重复的元素集,这个函数至多可以传一个参数,否则会报错;可以传比如串一个字符串或者一个列表,只含有一个参数

>>> a=set("A",12)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: set expected at most 1 arguments, got 2
#实例中传了2个参数,所以会报错
>>> a=set("Asdad")

>>> a=set(["["a","b"]","q","w","e"])
File "<stdin>", line 1
a=set(["["a","b"]","q","w","e"])
^
SyntaxError: invalid syntax
>>> a=set(['["a","b"]',"q","w","e"])    #单引号和双引号配合使用,不能单引号嵌套单引号,或者双引号嵌套双引号

1)list()和set()能够实现两种数据类型之间的转化。

2)基本操作

  set.add(元素)   向set集合中添加元素

  set1.update(set2)   将集合set2更新到集合set1中

>>> a.add("q")
>>> a
set(['A', 1, 2, 'q'])
>>> b=set()
>>> b.update(a)
>>> b
set(['A', 1, 2, 'q'])
>>> c.update(a)            
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dictionary-itemiterator' object has no attribute 'update'
# 注得先创建集合才能使用update,否则会报错,字典也是一样,得先创建出存在的字典

 set.pop()函数,任意选一个元素删除并将这个值返回。pop()不能有参数,否则报错。此外,如果set是空的了,也报错。 

set.remove(obj)函数,删除指定元素obj,该元素必须是set中的元素,否则就报错。

set.discard(obj)函数,删除指定元素obj,obj如果是set中的元素,就删除,如果不是,就什么也不做。

 set.clear()函数,清空集合中的所有元素,得到空集合。

3)   set()创立的集合都是可原处修改的集合,即里面的元素可变;frozenset()创立的集合不能在原处修改,里面的元素不可变。

>>> a=frozenset()
>>> type(a)
<type 'frozenset'>

4)判断集合A与集合B的关系

>>> a=set(['q', 'w', 'e', 'r'])
>>> b=set(['q', 'w'])
>>> b<a     #c是a的子集
True
>>>b.issubset(a)   #或者用这种方法,判断c是否是a的子集
True
>>> a.issuperset(c) #判断a是否是c的超集
True
>>> a | b                       #并集,可以有两种方式,结果一样
set(['q', 'w', 'e', 'r'])
>>> a.union(b)
set(['q', 'w', 'e', 'r'])
>>> a & b       #交集,两种方式,等价
set(['q', 'w'])
>>> a.intersection(b)
set(['q', 'w'])
>>> a - b                #A相对B的差(补)
set('e', 'r'])
>>> a.difference(b)
set(['e', 'r'])
>>> c=set(['q', 'w','s'])    #A、B的对称差集
>>> a.symmetric_difference(c)
set(['s', 'r', 'e'])
上一篇:Elasticsearch Document Update API详解、原理与示例,java教程编写


下一篇:MySQL中UPDATE语句,如果要更新多个字段,字段间不能使用“AND”,而应该用逗号分隔。