Python集合章

集合

集合是一个无序的不重复元素序列

用大括号 {} 或者 set() 函数创建集合

注意:创建一个空集合必须是 set() 而不是通过 {} 因为这个是创建字典的。

集合不能通过索引来查找,只能判断是否存在此集合中 is,set存储的元素必须是不可变对象,任何可变对象都不能放入set中的。

定义:

s = set() 定义一个空集合

s = {value1, value2, valueN,...} 创建有值的集合

s = set([列表,元组,字典]) 强转为集合类型,字典转后只留”键“

# 创建空集合方式一
>>> set = set()
>>> type(set)
<class 'set'>
>>> set.add("1")
>>> print(set)
{'1'}
----------------------------
# 创建集合方式二,大括号内必须有值,不然为字典类型
>>> set = {1,2,3,4,5}
>>> type(set)
<class 'set'>
----------------------------
# 创建集合方式三,用set()把元组、列表强转为集合
>>> s = set((1,2))
>>> s
{1,2}

  • set.add(value) 用于添加元素至集合中,由于是无序的,所以插入的位置可能会发生变化
  • set.update([list, tuple, dict]) 添加元素,参数可以是列表和元祖、字典
set = {1, 2, 3, 4, 5}
set.add("林青霞")
>>> print(set)
>>> {1, 2, 3, 4, 5, "林青霞"}
set.add("6")
>>> print(set)
>>> {1, 2, 3, 4, 5, "6" , "林青霞"}
-----------------------
set.update(('a','b'))
>>> print(set)
>>> {1, 2, 3, 4, 5, "6", 'a' , "林青霞", 'b'}
  • set.remove( x ) :将内容为x的元素从集合中删除,如果元素不存在报错
  • set.discard( x ):若集合中存在x则删除x,不存在不做操作,都会返回None
  • set.pop():随机删除集合中的元素
  • set.clear():清空集合
>>> set = {1,2,3,4,5,6}
>>> print(set)
{1, 2, 3, 4, 5, 6}
>>> set.remove(3)	# 删除内容是3的元素
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.remove('a')	# 若元素不存在时
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'
--------------------------
>>> set.discard('a')	# 不存在,但不会报错
>>> print(set)
{1, 2, 4, 5, 6}
>>> set.discard(4)
>>> print(set)
{1, 2, 5, 6}
---------------------	# pop随机删除
>>> set = {1,23,4,32,46,43,634,6,}
>>> type(set)
<class 'set'>
>>> set.pop()
32
>>> set.pop()
1
>>> set.pop()
4
>>> set.clear()	# 清空集合
>>> print(set)
set()
集合内置函数
  • len():计算集合的长度
  • set.intersection(set):返回两个集合的交集
  • s1.issubset(s2):s1是否为s2的子集
  • union():返回两个集合的并集
>>> set = {1,2,3,4}
>>> len(set)
4
-----------
>>> s1 = set([1,2,3])
>>> s2 = set([3,4,5])
>>> s1.intersection(s2)#交集
{3}
>>> s1.issubset(s2)#子集
False
>>> {3,4}.issubset(s2)
True
>>>
遍历集合
>>> set = {1,2,3,4}
>>> len(set)
4
>>> for i in set:
...     print(i)
...
1
2
3
4
交集和并集
>>> s = set("abc")
>>> s2 = set("cdf")
>>> s - s2	# 集合1中有,而集合2没有
{'a', 'b'}
-------------------
>>> s & s2	# 交集,集合1和集合2相同的
{'c'}
-----------------
>>> s | s2	# 并集,集合1和集合2所有的
{'c', 'b', 'a', 'f', 'd'}
------------------
>>> s ^ s2	#集合1独有,集合2独有的
{'d', 'f', 'a', 'b'}
集合转换
  1. 字典转换为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> dict = {"a":'1'}
>>> s = set(dict)	# 字典转换为集合
>>> print(s)
{'1','a'}
  1. 列表转化为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> list = [1,2,3]	# 创建列表
>>> s = set(list)	# 列表转换为集合
>>> print(s)
{1, 2, 3}
  1. 元祖转换为集合
>>> s = set()
>>> type(s)
<class 'set'>
>>> tup = (a,b,c)
>>> s = set(tup)
>>> print(s)
{'c', 'a', 'b'}
基于STM32 F4的永磁同步电机无位置传感器控制策略研究内容概要:本文围绕基于STM32 F4的永磁同步电机(PMSM)无位置传感器控制策略展开研究,重点探讨在不依赖物理位置传感器的情况下,如何通过算法实现对电机转子位置和速度的精确估计与控制。文中结合嵌入式开发平台STM32 F4,采用如滑模观测器、扩展卡尔曼滤波或高频注入法等先进观测技术,实现对电机反电动势或磁链的估算,进而完成无传感器矢量控制(FOC)。同时,研究涵盖系统建模、控制算法设计、仿真验证(可能使用Simulink)以及在STM32硬件平台上的代码实现与调试,旨在提高电机控制系统的可靠性、降低成本并增强环境适应性。; 适合人群:具备一定电力电子、自动控制理论基础和嵌入式开发经验的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动开发的工程师。; 使用场景及目标:①掌握永磁同步电机无位置传感器控制的核心原理与实现方法;②学习如何在STM32平台上进行电机控制算法的移植与优化;③为开发高性能、低成本的电机驱动系统提供技术参考与实践指导。; 阅读建议:建议读者结合文中提到的控制理论、仿真模型与实际代码实现进行系统学习,有条件者应在实验平台上进行验证,重点关注观测器设计、参数整定及系统稳定性分析等关键环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值