1. set() remove the repeat elements
-
>>> seq = [1,2,3,1,2,3,'a','hello','a','world']
-
>>> seq_set = set(seq)
-
>>> seq_set
-
set(['a', 1, 2, 3, 'world', 'hello']) #去除了重复对象
-
-
>>> string = "hello world"
-
>>> string_set = set(string)
-
>>> string_set
-
set([' ', 'e', 'd', 'h', 'l', 'o', 'r', 'w']) #sting也是Python中的一种序列
-
-
#set是一种集合,当然可以使用 in/not in, len
-
>>> 'h' in string_set
-
True
-
>>> 'a' in string_set
-
False
-
>>> len(string_set)
-
8
-
-
#set的增删操作
-
-
# s.add(x)
-
# 向 set “s”中增加元素 x
-
-
# s.remove(x)
-
# 从 set “s”中删除元素 x, 如果不存在则引发 KeyError
-
-
# s.discard(x)
-
# 如果在 set “s”中存在元素 x, 则删除
-
-
# s.pop()
-
# 删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError
-
-
# s.clear()
-
# 删除 set “s”中的所有元素
2.set集合操作
-
#子集运算
-
>>> s = set([1,2,3,4,5])
-
>>> t = set([1,2,3])
-
>>> s.issubset(t) #s是否为t的子集,相当于s<=t
-
False
-
>>> t.issubset(s) #t是否为s的子集,相当于s>=t
-
True
-
>>> s<=t
-
False
-
>>> t<=s
-
True
-
>>> s<t
-
False
-
>>> s>t
-
True
-
>>> s==t
-
False
-
>>> x = set([1,2,3])
-
>>> x==t #两set是否相等
-
True
-
-
-
>>> set1 = set([1,2])
-
>>> set2 = set([2,3])
-
# 合集
-
# s.union(t)
-
# s | t
-
# 返回一个新的 set 包含 s 和 t 中的每一个元素
-
>>> set1.union(set2)
-
set([1, 2, 3])
-
>>> set1 | set2
-
set([1, 2, 3])
-
# 并集
-
# s.intersection(t)
-
# s & t
-
# 返回一个新的 set 包含 s 和 t 中的公共元素
-
>>> set1.intersection(set2)
-
set([2])
-
>>> set1 & set2
-
set([2])
-
# 差集
-
# s.difference(t)
-
# s - t
-
# 返回一个新的 set 包含 s 中有但是 t 中没有的元素
-
>>> set1.difference(set2)
-
set([1])
-
>>> set1 - set2
-
set([1])
-
# 叫什么集 我也不知道
-
# s.symmetric_difference(t)
-
# s ^ t
-
# 返回一个新的 set 包含 s 和 t 中不重复的元素
-
>>> set1.symmetric_difference(set2)
-
set([1, 3])
-
>>> set1 ^ set2
-
set([1, 3])
-
-
-
# union(), intersection(), difference() 和 symmetric_difference()这种函数版本将会接受任何iterable对象作为参数。
-
# 相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。
-
-
>>> set1.union([3,4,5])
-
set([1, 2, 3, 4, 5])
-
>>> set1 | [3,4,5]
-
-
Traceback (most recent call last):
-
File "", line 1, in <module>
-
set1 | [3,4,5]
-
TypeError: unsupported operand type(s) for |: 'set' and 'list'
-
>>>
-
-
-
# 另外还有
-
# s.update(t)
-
# s |= t
-
# 返回增加了 set “t”中元素后的 set “s”
-
-
# s.intersection_update(t)
-
# s &= t
-
# 返回只保留含有 set “t”中元素的 set “s”
-
-
# s.difference_update(t)
-
# s -= t
-
# 返回删除了 set “t”中含有的元素后的 set “s”
-
-
# s.symmetric_difference_update(t)
-
# s ^= t
-
# 返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”
reference from: http://blog.csdn.net/sicofield/article/details/40083653
阅读(1186) | 评论(0) | 转发(0) |