✅作者简介:大家好我是姐姐划船吗?让我们一起共同进步吧!
个人主页:姐姐划船吗?
系列专栏:学会python,逆天改命
如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦
格言:静坐要辨己过,闲谈莫论人非
学习目标:
✏️ 了解数学运算并学会运用
✏️ 学会创建集合
✏️ 学会集合的基本操作
✏️ 了解集合内置方法
✏️ 了解什么是引用并学会运用
目录
1.集合( set )
1.1 数学运算及演示
1.2 集合创建格式及实例演示
1.3 集合 (set) 、列表 (list) 、元组 (tuple) 相互转换
1.4 公共方法
2.集合的基本操作
2.1添加元素
2.2 移除元素
3.集合内置方法完整列表
4.引用
4.1 引用的应用-三种方式交换两个数
集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。
集合对象还支持联合(union), 交集(intersection),差集(difference)等数学运算。
数学运算 |
作用 |
& |
求交集 |
| |
求并集 |
- |
求差集 |
x^z |
对称差集(在x或z中,但不会同时出现在两者中) |
In [12]: x Out[12]: {'a', 'b', 'c', 'd'} In [13]: y Out[13]: {'e', 'h', 'l', 'o'} In [14]: z Out[14]: {'a', 'm', 'p', 's'} |
|
In [16]: x&z Out[16]: {'a'} |
|
In [17]: x|y Out[17]: {'a', 'b', 'c', 'd', 'e', 'h', 'l', 'o'} |
|
In [18]: x-y Out[18]: {'a', 'b', 'c', 'd'} |
|
In [19]: x^z Out[19]: {'b', 'c', 'd', 'm', 'p', 's'} |
|
for i in x print i |
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
parame = {value01,value02,...} 或者 set(value) |
实例(Python 3.0+)
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
In [21]: b=[1,2,3,12,1,3,3,4,1,3,4] In [22]: b Out[22]: [1, 2, 3, 12, 1, 3, 3, 4, 1, 3, 4] In [23]: c=set(b) #第一中去重方法 In [24]: c Out[24]: {1, 2, 3, 4, 12} In [25]: d=list(c) In [26]: d Out[26]: [1, 2, 3, 4, 12] In [27]: c Out[27]: {1, 2, 3, 4, 12} In [28]: e=tuple(c) In [29]: e Out[29]: (1, 2, 3, 4, 12) In [30]: f=set(e) |
alist = [1,2,3,12,12,3,4,5,11,2,2] #第二种 for x in alist: if alist.count(x) >1: alist.remove(x) alist.sort() print(alist) |
alist = [1,2,3,12,12,3,4,5,11,2,2] 第三种 blist = [ ] for i in alist: if i not in blist: #print("重复的") blist.append(i) print(blist) |
运算符 |
Python表达式 |
结果 |
描述 |
支持的数据类型 |
+ |
[1, 2] + [3, 4] |
[1, 2, 3, 4] |
合并 |
字符串、列表、元组“a”+”b”->”ab” [1,2]+[3,4]->[1,2,3,4] (1,2)+(3,4) ->(1,2,3,4) |
* |
'Hi!' * 3 |
['Hi!' 'Hi! 'Hi!'] |
复制 |
字符串、列表、元组 |
in |
3 in (1, 2, 3) |
True |
元素是否存在 |
字符串、列表、元组、字典 |
not in |
4 not in (1,2, 3) |
True |
元素是否不存在 |
字符串、列表、元组、字典 |
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "", line 1, in
KeyError: 'Facebook'
>>>
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
实例(Python 3.0+)
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
脚本模式实例(Python 3.0+)
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
输出结果:
$ python3 test.py
Runoob
多次执行测试结果都不一样。
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
用 id() 来判断两个变量是否为同一个变量的引用
在Python中值是靠引用来传递的
我们可以用id()来判断两个变量是否为同一个变量的引用。
我们可以把id理解为那块内存的地址表示。
可变类型和不可变类型
不可变类型:字符串、数字、元组
可变类型:列表,字典
可变类型可以修改值 (id相等,修改一个另一个也改变)
不可变类型不能修改值(id不相等修改一个另一个不变)
a = [1,2] b = {"name":"张三","age":18} print("交换前:") print("a==",id(a)) print("b==",id(b)) |
第一种方式:使用第三方变量
c = a a = b b = c |
第二种方式:使用两个数和在减掉另一个数
a = a+b #a = 9 b = a-b #9-5=4 a = a-b #9-4=5 |
第三种方式: Python 特有方式
a,b = b,a |
感谢大家对我的支持,如果您觉得博主的文章对您有帮助的话请来个三连吧,谢谢!