python提供的集合类型,集合是python数据类型
本文主要详细介绍Python内置数据类型的集合。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
00-1010 1.集合1.1简介。使用{}直接创建集合1.2。使用set()函数创建集合2。集合没有切片功能!3.常见的处理集合的内置函数3.1 len函数3.2 map函数3.3 filter函数3.4 reduce函数3.5 sum函数3.6 max函数3.7 min函数3.8 sorted函数3.9 enumerate函数3.10 any函数3.11 all函数4。集合的内置方法4.1。添加(val)4.2。清除()4.3。复制()4.4。差异(集合1,集合2,)4.5 .差异_更新(集合1,集合2,)4.6 .丢弃(val)4.7。交集(集合1,集合2,)4.8 .交集_更新()4.9。isdisjoint()4.10。issubset(other_set)4.11。issuperset(other_set)4.12。pop()4.13。删除()4.14。Symmetric _ difference () 4.15。symmetric _ difference _ update()4.16。Union (other _ set) 4.17。更新(other _ set) 5。设置and运算符5.1-运算符5.2 运算符5.3运算符5.4运算符5.5 in,not
目录
这套的最大特点就是每个元素都是独一无二的。它可以删除、添加或替换元素,但没有下标。不能通过下标或slice函数访问集合。因为收藏就像一个袋子,里面装着不同颜色的玻璃球,你可以更换玻璃球,但不能指定玻璃球的存放位置。
它最大的作用就是元素的唯一性,常用来去除冗余数据。
1. 集合 set 简介
可以用{}直接创建集合,但不能用{}创建空集,因为{}是用来创建空字典的。只能通过set()创建空集。
1.1 使用 { } 直接创建集合
使用内置的功能集,您可以快速地将其他类型的可迭代对象转换为集合对象。这些迭代对象可以是字符串、列表、元组等。
打印(“创建空集”)
print(set())
str1=ABCDEF!
s=设置(str1)
打印( **40)
Print(“由字符串转换的集合,每个元素都是唯一的单个字符”)
印刷品
列表1=[0,1,2,3,4,3,2,1]
s=集合(列表1)
打印( **40)
英语字母表中第十六个字母
rint("一个由列表转换的集合,但是在列表中重复的元素只会出现一次")
print(s)
2. 集合没有切片功能!
请仔细理解,集合没有切片功能,这意味着什么,这意味着无法对它排序(当然可以转换成列表再排序),意味着无法用 while 循环配合下标依次获得元素,你可以用 for 循环获取。
3. 处理集合的常见内置函数
3.1 len 函数
len 函数返回集合的长度,即元素的个数。
3.2 map 函数
map 函数对集合中的每个元素进行相同的操作,然后返回一个 map 对象,再使用 set 函数可以得到集合。
>>> a{sdf, er}
>>> set(map(lambda x:x+"-",a))
{er-, sdf-}
3.3 filter 函数
filter 函数对集合中的每个元素进行相同的操作,符合条件的元素才留下来,返回一个 filter 类型的对象。
>>> a{sdf, er}
>>> set(filter(lambda x:len(x)==2,a))
{er}
3.4 reduce 函数
filter 函数依次对集合中的元素进行相同的迭代操作最后得到一个对象。
>>> import functools>>> a
{sdf, er}
>>> functools.reduce(lambda x,y:x+"~"+y,a)
sdf~er
3.5 sum 函数
sum 函数,只对元素是数值的集合有效,返回列表中的元素总和,如果元素类型不是数值,则返回 TypeError。
3.6 max 函数
max 函数,返回集合中的元素最大值。
3.7 min 函数
min 函数,返回集合中的元素最小值。
>>> a={1,2,3}>>> sum(a)
6
>>> min(a)
1
>>> max(a)
3
>>>
3.8 sorted 函数
sorted 函数会对集合按照指定方式进行排序,请注意,使用 sorted 函数会得到一个排好序的列表,不是集合!!!原集合不会改变。
list1 = [0,1,2,3,4,3,2,1]s=set(list1)
s1=sorted(s)
print(s1)
print(type(s1))
3.9 enumerate 函数
enumerate 函数可以将一个集合依次取出。
3.10 any 函数
any() 函数用于判断给定的集合的所有元素是否都为 False,则返回 False,如果有一个为 True,则返回 True。
3.11 all 函数
all() 函数用于判断给定的集合的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
4. 集合的内置方法
4.1 .add(val)
.add(val) 方法附加一个元素 val,如果 val 已经在集合中,那么原来的集合不变化。
4.2 .clear()
.clear() 方法将集合清空。
4.3 .copy()
.copy() 方法将返回集合的拷贝(而不是和原来的列表共用同一个地址)。
4.4 .difference(set1,set2,...)
difference() 方法用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二、三、N个集合(方法的参数)中。
4.5 .difference_update(set1,set2,...)
difference_update() 方法用于移除两个或者多个集合中都存在的元素。
difference_update()方法与difference()方法的区别在于difference()方法返回一个移除相同元素的新集合,而difference_update()方法是直接在原来的集合中移除元素,没有返回值。
# 集合的使用a={1,2,3,4,1}
b={4,5,6,7}
# 1.集合是不会有重复的元素的
print("1. ",a)
# 2.集合使用 add 方法加一个元素
a.add("6")
print("2. ",a)
# 3.集合使用 clear 方法清空
a.clear()
print("3. ",a)
a={1,2,3,4}
# 4.集合使用 copy 方法复制数据
c=a.copy()
print("4. ",c)
# 5.集合使用 difference 方法返回
# 和其他集合不一样的数据
print("5. ",a.difference(b))
# 6.集合使用 difference_update 方法删除
# 和其他集合一样的数据
# a={1,2,3,4}
# b={4,5,6,7}
a={1,2,3,4}
b={4,5,6,7}
print("6. ",a.difference_update(b))
print("6. ",a)
a={1,2,3,4}
c={1}
a.difference_update(b,c)
print("6. ",a)
# 7.集合使用 discard 方法删掉数据 val
a={1,2,3,4}
a.discard(2)
print("7. ",a)
4.6 .discard(val)
.discard 方法删除集合中指定的元素。
4.7 .intersection(set1,set2,...)
.intersection 方法返回集合的交集,自身不受影响。
4.8 .intersection_update()
.intersection 方法原地改变自身为两个或者多个集合的交集。
>>> a={1,2,3,4,5}>>> b={2,3,4,5,6,7}
>>> a.intersection(b)
{2, 3, 4, 5}
>>> a
{1, 2, 3, 4, 5}
>>> b
{2, 3, 4, 5, 6, 7}
>>> a.intersection_update(b)
>>> a
{2, 3, 4, 5}
>>> b
{2, 3, 4, 5, 6, 7}
4.9 .isdisjoint()
.isdisjoint 方法判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
>>> a={1,2,3,4,5}>>> b={2,3,4,5,6,7}
>>> c={"a","b"}
>>> a.isdisjoint(b)
False
>>> a.isdisjoint(c)
True
4.10 .issubset(other_set)
.issubset 方法判断自身集合是否为该方法参数集合 other_set 的子集。
>>> a={1,2,3,4,5}>>> b={2,3,4,5,6,7}
>>> c={1}
>>> a.issubset(b)
False
>>> a.issubset(c)
False
>>> c.issubset(a)
True
4.11 .issuperset(other_set)
.issuperset方法判断该方法参数集合 other_set 是否为自身集合的子集。
>>> a={1,2,3,4,5}>>> b={2,3,4,5,6,7}
>>> c={1}
>>> a.issuperset(b)
False
>>> a.issuperset(c)
True
4.12 .pop()
.pop() 方法将返回集合中的一个元素,原集合将删除该元素。
请注意,集合中的 pop 方法是没有 index 参数!如果像使用列表中的 pop 方法输入 index 参数,则返回TypeError: pop() takes no arguments (1 given) 错误。
4.13 .remove()
.remove(val) 方法将删除集合中的val 元素,返回为空。如果 val 不在集合中,则返回KeyError 错误。
4.14 .symmetric_difference()
返回两个集合中不重复的元素集合,而不改变自身集合。
4.15 .symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
# 10.集合使用 ^ 操作符返回# 两个集合中不一样的数据
# 等同于 symmetric_difference方法
a={1,2,3,4}
b={4,5,6,7}
tmp=a^b
print("10. ",tmp)
print("a==>",a)
print("b==>",b)
print("使用 ^ 操作符 原来的集合不受影响")
print("*"*60)
print("a.symmetric_difference(b)==>",a.symmetric_difference(b))
print("a==>",a)
print("b==>",b)
print("使用 symmetric_difference方法 原来的集合不受影响")
print("*"*60)
print("a.symmetric_difference_update(b)==>",a.symmetric_difference_update(b))
print("使用 symmetric_difference_update 原来的集合会改变")
print("a==>",a)
print("b==>",b)
print("*"*60)
4.16 .union(other_set)
.union 方法返回两个集合的并集,而不改变自身集合。
4.17 .update(other_set)
.update 方法给自身集合集合添加元素。
>>> a={0,1}>>> b={3,4}
>>> c={5,6}
>>> a.union(b)
{0, 1, 3, 4}
>>> a
{0, 1}
>>> b
{3, 4}
>>> a.update(b)
>>> a
{0, 1, 3, 4}
>>> b
{3, 4}
5. 集合和运算符
5.1 - 运算符
a 、b 是两个集合;a - b类似于 a.difference(b) 方法,即返回集合a中包含而集合b中不包含的元素,自身不受改变。
>>> a={0,1,2,3}>>> b={2,3,4,5}
>>> a-b
{0, 1}
>>> a.difference(b)
{0, 1}
5.2 运算符
a 、b 是两个集合;a b类似于 a.union(b) 方法,即返回集合a和b中所有的元素,自身不受改变。
>>> a={0,1,2,3}>>> b={2,3,4,5}
>>> ab
{0, 1, 2, 3, 4, 5}
>>> a.union(b)
{0, 1, 2, 3, 4, 5}
5.3 & 运算符
a 、b 是两个集合;a & b类似于 a.intersection(b) 方法,即返回集合a和b中都包含了的元素,自身不受改变。
# 9.集合使用 & 选出集合重叠的部分# 等同于 insection 方法
a={1,2,3,4}
b={4,5,6,7}
print("********* 初始数据 ***********")
print("a==>",a)
print("b==>",b)
print("8. a & b==>",a & b)
print("执行 a & b 后")
print("a==>",a)
print("b==>",b)
print("使用 & 操作符 原来的集合不受影响")
print("*"*60)
print("8. a.intersection(b)==>",a.intersection(b))
print("使用 intersection 方法 原来的集合不受影响")
print("a==>",a)
print("b==>",b)
print("*"*60)
print("8. a.intersection_update(b)==>",a.intersection_update(b))
print("使用 intersection_update 方法 原来的集合会改变")
print("a==>",a)
print("b==>",b)
print("*"*60)
5.4 ^运算符
a 、b 是两个集合;a ^ b类似于 a.symmetric_difference(b) 方法,即返回不同时包含于a和b的元素,自身不受改变。
>>> a={0,1,2,3}>>> b={2,3,4,5}
>>> a.symmetric_difference(b)
{0, 1, 4, 5}
>>> a^b
{0, 1, 4, 5}
5.5 in 、not in 运算符
in 运算符判断某个元素属于某个集合
not in 运算符判断某个元素不属于某个集合
>>> a={0,1,2,3}>>> 0 in a
True
>>> "0" in a
False
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。