欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python—数据类型之集合(Set)

程序员文章站 2023-09-28 22:16:54
1.集合是一个无序的,且不重复元素的集合。它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。 2.基本功能包括关系测试和消除重复元素。注意:集合存在的意义就是去重和关系运算。 去重,把一个列表变成集合,就自动去重了。 关系测试,测试两组数据之前的交集、差集、并 ......

1.集合是一个无序的,且不重复元素的集合。它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。

2.基本功能包括关系测试和消除重复元素。注意:集合存在的意义就是去重和关系运算。

  • 去重,把一个列表变成集合,就自动去重了。
  • 关系测试,测试两组数据之前的交集、差集、并集等关系。

3.集合中的三个特征

  • 确定性(元素必须是可hash)
  • 互异性(去重)
  • 无序性(集合中的元素没有先后之分)如集合{1,2,3}和集合{2,3,1}算作一个集合

集合的创建

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。大括号也不可以创建元素含有字典与列表的集合。

创建set需要一个list或者tuple或者dict作为输入集合。其中重复元素在set中会自动过滤。

集合可以通过可迭代对象(字符串、元组、列表等)进行创建;集合中的元素不可重复;集合中的元素无序排列。

创建空的集合:s = set(),不能用 { } 来创建空集合。

创建非空集合:s = {1,2,3,4},或者 s = set(iterable)。

# 创建空集合
set1 = set()
print(set1, type(set1))      # (set([]),  <type 'set'>)
 
# 创建非空集合
set1 = {1, 2, 2}
print(set1, type(set1))      # (set([1, 2]),  <type 'set'>)
set2 = set({1, 2, 2})
print(set2, type(set2))      # (set([1, 2]),  <type 'set'>)
set3 = set('abcdefabcd')
set4 = set(['a','b','c','a'])
set5 = set(('a','b','c','a'))
set6 = set({'a':1, 'b':2})
set7 = set(range(1, 10, 3))
print(set3, type(set3))      # (set(['a', 'c', 'b', 'e', 'd', 'f']),  <type 'set'>)
print(set4, type(set4))      # (set(['a', 'c', 'b']),  <type 'set'>)
print(set5, type(set5))      # (set(['a', 'c', 'b']),  <type 'set'>)
print(set6, type(set6))      # (set(['a', 'b']),  <type 'set'>)
print(set7, type(set7))      # (set([1, 4, 7]),  <type 'set'>)
 
# 集合推导式
set1 = {x for x in 'abracdabra' if x not in 'abc'}
print(set1, type(set1))      # (set(['r', 'd']),  <type 'set'>)

集合的常用方法:见help(set)