音乐门户网站模板,郑州做茶叶的网站,网站建设 比选,郑州做网站齿轮Python之哈希表-哈希表原理
集合Set
集合#xff0c;简称集。由任意个元素构成的集体。高级语言都实现了这个非常重要的数据结构类型。Python中#xff0c;它是可变的、无序的、不重复的元素的集合
初始化
set() - new empty set objectset(iterable) - new set …Python之哈希表-哈希表原理
集合Set
集合简称集。由任意个元素构成的集体。高级语言都实现了这个非常重要的数据结构类型。Python中它是可变的、无序的、不重复的元素的集合
初始化
set() - new empty set objectset(iterable) - new set object
元素性质
去重在集合中所有元素必须相异无序因为无序所以不可索引可哈希Python集合中的元素必须可以hash即元素都可以使用内建函数hash目前学过不可hash的类型有list、set、bytearray可迭代set中虽然元素不一样但元素都可以迭代出来
增加
add(elem) 增加一个元素到set中如果元素存在什么都不做 update(*others) 合并其他元素到set集合中来参数others必须是可迭代对象就地修改
删除
remove(elem) 从set中移除一个元素元素不存在抛出KeyError异常。为什么是KeyError discard(elem) 从set中移除一个元素元素不存在什么都不做 pop() - item 移除并返回任意的元素。为什么是任意元素空集返回KeyError异常 clear() 移除所有元素
修改
集合类型没有修改。因为元素唯一。如果元素能够加入到集合中说明它和别的元素不一样。所谓修改其实就是把当前元素改成一个完全不同的元素就是删除加入新元素。
索引
非线性结构不可索引。 set() # 空集
{}, type({}) # 空字典
# 返回结果({}, dict)set(range(5)), {1, 2, abc}, set((1, 2, 3)), {*range(5), *[1, 2, 3]}
# 集合 集合是去重的根据此例体会一下。
# 返回结果({0, 1, 2, 3, 4}, {1, 2, abc}, {1, 2, 3}, {0, 1, 2, 3, 4}){1, 1, 1, 1, 2}, {1, (1,), 1, (1,)}
# 集合是无序的 去重
# 返回结果({1, 1, 2}, {(1,), 1}){1, *abc, *(1, 2), *[1]}
# 不可哈希的可以解构
# 返回结果{1, 2, a, b, c}{1, (1,), (), , b, None, True, False, range(5)}
# 集合中可放的值
# 返回结果{, (), (1,), 1, False, None, b, range(0, 5)}set(range(5))
# 这个是把range对象给set集合使用
# 返回结果{0, 1, 2, 3, 4}list(range(5))
# 这个是把range对象给list列表使用
# 返回结果[0, 1, 2, 3, 4]{range(5)}
# 这个得作用是集合中放了一个range对象但是没有使用
# 返回结果{range(0, 5)}x set()
x
# x等于一个空集
# 返回结果set()x.add(1)
x
# 集合中增加元素
# 返回结果{1}x.add(abc)
x
# 集合中增加元素
# 返回结果{1, abc}x.add(1)
x
# 体会去重的概念
# 返回结果{1, abc}x.update(range(3), abc)
x
# 相当于把括号中的元素都拿出来加入到x集合中
# 返回结果{0, 1, 2, a, abc, b, c}x.update([1, abc, 2, xyz])
# x.update却成功的添加到x集合中思考一下为什么可以翻到最下方的报错中有一个报错是x.add报错。x
# 返回结果{0, 1, 2, a, abc, b, c, x, xyz}因为add是把整个列表都加到集合中因为列表不可哈希所以加不进去update是把列表中的所有内容依次拿出添加到x集合中所以可以加入
hash(1), hash(abc)
# 判断能不能哈希可以使用hash函数进行测试一下
# 返回结果(1, -2803511482477406815)x.remove(a)
x
# 删除
# 返回结果{0, 1, 2, abc, b, c, x, xyz}x.clear()
# clear清空集合慎用x.pop()
# 弹出
# 返回结果0x.discard(-1)
# discard 如果删除的值没有不会报错-1 in x
# -1在不在x中返回值True或False
# 返回结果Falseabc in x
# abc在不在x中返回值True或False
# 返回结果True报错
{1, abc, (1, 2), [1]}
# 列表不可哈希
# 返回结果TypeError: unhashable type: list{1, {}}
# 字典不可哈希
# 返回结果TypeError: unhashable type: dict{{1}}
# 集合也不可哈希
# 返回结果TypeError: unhashable type: set{{1}, [1], {}}
# 集合中不能放的元素x.add([1, abc, 2, xyz])
# x.add提示列表不可哈希
# 返回结果TypeError: unhashable type: listhash([])
# 列表不可哈希
# 返回结果TypeError: unhashable type: listx.remove(-1)
# 哈希表是无序的不能使用-1Key唯一的不重复的
# 返回结果KeyError: -1