1. 是否为序列类型:即该数据的元素是否能够索引.其中序列类型的包括str/list/tuple;
2. 是否可以原处修改:即该数据的元素是否能够原处修改(特别提醒看官,这里说的是原处修改问题,有的资料里面说str不能修改,也是指原处修改问题.为了避免误解,特别强调了原处).能够原处修改的list/dict(特别说明,dict的键必须是不可修改的,dict的值可原处修改)
set可以堪称是list和dict的杂合;
set的特点:
用{}定义,其中元素没有序列,元素不能重复
继承了list特点,可以原处修改
更改set: s.add("数据类型")或者s1.update(s2)
>>> s1
{'y', 't', 'o', 'h', 'p', 'n'}
>>> s2
{'google', 'face', 'facebook', 123, 'book'}
>>> s3
{'facebook', 123}
>>> s4
{123, 'face'}
>>> s1.add(123)
>>> s1
{'y', 't', 123, 'o', 'h', 'p', 'n'}
>>> s1.add("abs")
>>> s1
{'y', 't', 123, 'abs', 'o', 'h', 'p', 'n'}
>>> s1.add([1,34.5]) #此处必须加" ",否则报错
Traceback (most recent call last):
File "
TypeError: unhashable type: 'list'
>>> s1.add("[1,34.5]")
>>> s1
{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', 'p', 'n'}
>>> s1.add("(1,34.5)")
>>> s1
{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', '(1,34.5)', 'p', 'n'}
s1.update(s2)
>>> s1
{'y', 't', '[1,34.5]', 123, 'abs', 'o', 'h', '(1,34.5)', 'p', 'n'}
>>> s1.update(s2)
>>> s1
{'y', 't', 'facebook', '[1,34.5]', 'google', 123, 'abs', 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}
set删除:s.pop()(随意删除)、s.remove("元素")(指定删除)
>>> s1.pop()
'y'
>>> s1.pop()
't'
>>> s1.pop("google")
Traceback (most recent call last):
File "
TypeError: pop() takes no arguments (1 given)
set.pop()是从set中任意选一个元素,删除并将这个值返回.但是,不能指定删除某个元素.报错信息中就告诉我们了,pop()不能有参数.
>>> s1.remove("google")
>>> s1
{'facebook', '[1,34.5]', 123, 'abs', 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}
>>> s1.remove("abs")
>>> s1
{'facebook', '[1,34.5]', 123, 'o', 'face', 'h', '(1,34.5)', 'p', 'n', 'book'}
set.remove(obj)中的obj,必须是set中的元素,否则就报错
跟remove(obj)类似的还有一个discard(obj):
>>> s1.discard("h")
>>> s1
{'facebook', '[1,34.5]', 123, 'o', 'face', '(1,34.5)', 'p', 'n', 'book'}
>>> s1.discard("n")
>>> s1
{'facebook', '[1,34.5]', 123, 'o', 'face', '(1,34.5)', 'p', 'book'}
与help(set.remove)的信息对比,看看有什么不同.discard(obj)中的obj如果是set中的元素,就删除,如果不是,就什么也不做
set.clear():删除所有元素
>>> s3
{'facebook', 123}
>>> s3.clear()
>>> s3
set()
>>> s3
set()
>>> bool(s3)
False
>>>
冻结集合:setname = frozenset(元素)
>>> f_set = frozenset("python")
>>> f
f_set finally: for from
filter( float( format( frozenset(
>>> f_set
frozenset({'y', 't', 'o', 'h', 'p', 'n'})
>>> f_set.add("abc")
Traceback (most recent call last):
File "
AttributeError: 'frozenset' object has no attribute 'add'
>>>