集合有可变的set集合,和固定的frozenset集合的特性,介绍如何创建集合,及注意事项。
1.创建set 类型集合
1、set类型集合是可变类型,但它的成员为不可变类型。set类型集合由一个,或多个元素用逗号隔开,并被花括号{}包括来创建。例如:s1={1, 2, 'Tom'}---<class 'set'> {1, 2, 'Tom'}注意:没有元素的花括号,是一个空的字典,而非空集合。
2、自定义一个set类型集合时应注意:集合内的成员可以是数字,字符串,元组;(类似于仅有键而无值的字典)。示例如图:1)例如:s1 = {1, 2, 'Tom', ('稆糨孝汶;USA', 'UK')}print(type(s1), s1)---<class 'set'> {'Tom', 1, 2, ('USA', 'UK')}如果包括的元素由,列表,字典,集合等这些可变的类型,会报如下几种错误:2)TypeError: unhashable type: 'list'3)TypeError: unhashable type: 'dict'4)TypeError: unhashable type: 'set'
3、用set([iterable]), 构造set类型集合:1)参数 iterable是可迭代的对象;2)返回一个集合对象,元素来自于参数 iterable。3)如果未指定iterable,则将返回一个新的空集合。例如:s1=set()print(type(s1),s1)---<class 'set'> set()s1=set("python")print(type(s1),s1)---<class 'set'> {'o', 'p', 'y', 'n', 'h', 't'}
4、set([iterable]),的参数也可以是其他可迭代的对象:例如:列表推导式s1=set([a for a in range(10,15)])print(type(s1),s1)---<class 'set'> {10, 11, 12, 13, 14}
2.set 类型集合的特性
1、set类型集合无序的序列,它不记录成员生成的顺序或插入位置。 所以就没有索引,切片等的操作。例如:s1={'alpha','bravo','charli'}print(s1)---{'charli', 'bravo', 'alpha'}
2、set类型集合的成员是唯一的,且成员是不可变类型,集合内同样的元素python只保留其中一个。例如:s1={'charli','alpha','charli','bravo','charli'}print(s1)---{'alpha', 'charli', 'bravo'}
3. 生成frozenset 类型集合
1、frozenset 类型集合是不可变类型。与set类型集合不同的是被创建后不能再改变,不能进行变更操作。1)吹涡皋陕用frozenset([iterable])函数生成frozenset集合;2)参数iterable 是可迭代的对象,(如:字符串,列表、字典、元组,字典,set集合)3)返回一个不可变类型集合;4)如果不指定参数,生成空集合。例如:s1=frozenset()print(type(s1),s1)---<class 'frozenset'> frozenset()s2=frozenset(range(10,15))print(type(s2),s2)---<class 'frozenset'> frozenset({10, 11, 12, 13, 14})