2024年最全python进阶系列- 04 集合,2024年最新哈希表 面试

简介: 2024年最全python进阶系列- 04 集合,2024年最新哈希表 面试
my_set_3 = set(“aaabbbcccdddeeeeeffff”) # 将字符串转为集合,自动去重
print(my_set_3)

小心:一个空集合不能使用{},因为这会被解释为字典,用set()代替

a = {}
print(type(a)) # 此时为字典
a = set()
print(type(a))
**结果**:
{‘banana’, ‘apple’, ‘cherry’}
{‘three’, ‘one’, ‘two’}
{‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘a’}
### 增加元素
调用`set.add()`函数向集合中添加元素。
**代码**:
my_set = set()

用add()方法增加元素

my_set.add(42)
my_set.add(True)
my_set.add(“Hello”)

注意:添加的元素没有顺序,添加的元素可能会在打印时不同

print(my_set)

什么也不会发生,因为元素已经存在

my_set.add(42)
print(my_set)
**结果**:
{True, 42, ‘Hello’}
{True, 42, ‘Hello’}
### 移除元素
从集合中删除元素,如如下4种方法:
* `set.remove()`删除集合中的某个元素,元素不存在时抛出异常`KeyError`。
* `set.discard()`删除集合中的某个元素,元素不存在时不抛出异常。
* `set.clear()` 清空集合
* `set.pop()` 随机返回一个元素,并删除
**代码**:

remove(x):移除x,如果元素不存在,则抛出KeyError异常

my_set = {“apple”, “banana”, “cherry”}
my_set.remove(“apple”)
print(my_set)

KeyError:

my_set.remove(“orange”)

discard(x): 如果元素不存在,不会抛出异常

my_set.discard(“cherry”)
my_set.discard(“blueberry”)
print(my_set)

clear():移除所有元素

my_set.clear()
print(my_set)

pop(): 移除并返回一个随机元素

a = {True, 2, False, “hi”, “hello”}
print(a.pop())
print(a)
**结果**:
{‘banana’, ‘cherry’}
{‘banana’}
set()
False
{True, 2, ‘hi’, ‘hello’}
### 检查元素是否在
`in` 操作符,适合列表、字典、元组 及集合,万能的检查元素是否存在!
**代码**:
my_set = {“apple”, “banana”, “cherry”}
if “apple” in my_set:
print(“yes”)
**结果**:

yes

### 遍历集合
`for`循环遍历,适合列表、字典、元组 及集合,万能遍历容器类数据结构!
**代码**:

迭代集合

注意:顺序不重要

my_set = {“apple”, “banana”, “cherry”}
for i in my_set:
print(i)
**结果**:

banana

apple

cherry

### 合并 和 交集
* `set_a.union(set_b)` 返回集合`set_a`与`set_b`的并集,且不改变`set_a`、`set_b`
* `set_a.intersection(set_b)` 返回集合`set_a`与`set_b`的交集 ,且不改变`set_a`、`set_b`
**代码**:
odds = {1, 3, 5, 7, 9}
evens = {0, 2, 4, 6, 8}
primes = {2, 3, 5, 7}

union(): 合并两个集合,不会有重复

注意:这不会改变两个集合

u = odds.union(evens)
print(u)

intersection(): 求交集

i = odds.intersection(evens)
print(i)
i = odds.intersection(primes)
print(i)
i = evens.intersection(primes)
print(i)
**结果**:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
set()
{3, 5, 7}
{2}
### 差集
* `set_a.difference(set_b)` 返回集合`set_a`中不在`set_b`中的元素,即差集,且不改变`set_a`、`set_b`
* `set_a.symmetric_difference(set_b)` 返回`set_`和`set_b`中不同的元素
> 
> **注意**: `set_a.symmetric_difference(set_b)` = `set_b.symmetric_difference(set_a)` 想想为什么?
> 
> 
> 
**代码**:
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setB = {1, 2, 3, 10, 11, 12}

差集:返回setA中不在setB中的元素

diff_set = setA.difference(setB)
print(diff_set)

反过来,返回setB中不在setA中的元素

diff_set = setB.difference(setA)
print(diff_set)

symmetric_difference():返回setA和setB中不同的元素

diff_set = setA.symmetric_difference(setB)
print(diff_set)

A.symmetric_difference(B) = B.symmetric_difference(A)

diff_set = setB.symmetric_difference(setA)
print(diff_set)
**结果**:
{4, 5, 6, 7, 8, 9}
{10, 11, 12}
{4, 5, 6, 7, 8, 9, 10, 11, 12}
{4, 5, 6, 7, 8, 9, 10, 11, 12}
### 更新集合
主要有`update()`、`intersection_update`、`difference_update`、`symmetric_difference_update` 四种方法,具体见如下代码:
setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setB = {1, 2, 3, 10, 11, 12}

update(): 将setB中的元素添加到setA中

setA.update(setB)
print(setA)

intersection_update(): 将setA和setB中的元素交集添加到setA中

setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.intersection_update(setB)
print(setA)

difference_update() : 将setA和setB中的元素差集添加到setA中

setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.difference_update(setB)
print(setA)

symmetric_difference_update(): 将setA和setB中的元素对称差集添加到setA中

setA = {1, 2, 3, 4, 5, 6, 7, 8, 9}
setA.symmetric_difference_update(setB)
print(setA)

注意:所有的update方法也可以用其他可迭代对象作为参数,如列表,元组

setA.update([1, 2, 3, 4, 5, 6])

**结果**:

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。


相关文章
|
2月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
87 1
思科设备巡检命令Python脚本大集合
|
2月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
113 1
Java面试题之Java集合面试题 50道(带答案)
|
2月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
存储 缓存 API
解密 Python 集合的实现原理
解密 Python 集合的实现原理
50 11
|
2月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
61 1
|
3月前
|
存储 API 索引
Python 的集合是怎么实现的?
Python 的集合是怎么实现的?
53 9
|
3月前
|
存储 索引 Python
Python常用数据结构——集合
Python常用数据结构——集合
62 3
|
2月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
2月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
7月前
|
存储 Python
Python中,集合(Set)
Python中,集合(Set)
54 1