Python集合set()使用的方法详解

目录
  • 1.集合的特点
  • 2.set的建立
    • 1.用set()函数创建set集合
    • 2.add()
    • 3.用{}创建set集合。空set集合用set()函数表示,不可a={}。
    • 4.set集合的转化
  • 3.常见使用注意事项
  • 4.set的常用方法
    • 4.1 set集合的增删改查操作
    • 4.2 其它用法
  • 5.列表,元组,字典,集合
    • 5.1 它们之间的类型转换
    • 5.2 集合和列表方法上的区别
  • 总结

在python3中按数据类型的可变与不可变大致分为如下几种类型:

  • 不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。

1.集合的特点

1.无序不重复没有重复的元素,且元素无序存放(故集合没有下标和切片),set的只要作用就是用来给数据去重。

2.使用时为 { },与字典区分:当花括号里的元素不是键值对的时候为集合。

3.集合的底层其实是通过字典来封装的

2.set的建立

可以使用大括号 { } 或者 set() 函数创建集合,但是注意如果创建一个空集合必须用 set() 而不是 { },因为{}是用来表示空字典类型的。

1.用set()函数创建set集合

person2 = set(("hello","jerry",133,11,133,"jerru")) #只能传入一个参数,可以是list,tuple等 类型
print(len(person2))
print(person2)
'''
5
{133, 'jerry', 11, 'jerru', 'hello'}
'''

2.add()

a=set()
a.add("a")
a.add("b")
print(a)

3.用{}创建set集合。空set集合用set()函数表示,不可a={}。

person ={"student","teacher","babe",123,321,123} #同样各种类型嵌套,可以赋值重复数据,但是存储会去重
print(len(person))  #存放了6个数据,长度显示是5,存储是自动去重
print(person) #但是显示出来则是去重的
'''
5
{321, 'teacher', 'student', 'babe', 123}
'''
#空set集合用set()函数表示
person1 = set() #表示空set,不能用person1={}
print(len(person1))
print(person1)
'''
0
set()
'''

4.set集合的转化

a=["awe","weg","dawqgg"]
c=set(a)
print(c)
b="chenshuagege"
d=set(b)
print(d)
al=("233","34455")
aw=set(al)
print(al)

3.常见使用注意事项

#set对字符串也会去重,因为字符串属于序列。
str1 = set("abcdefgabcdefghi")
str2 = set("abcdefgabcdefgh")
print(str1,str2)
print(str1 - str2) #-号可以求差集
print(str2 - str1)  #空值
#print(str1 + str2)  #set里不能使用+号
====================================================================
{'d', 'i', 'e', 'f', 'a', 'g', 'b', 'h', 'c'} {'d', 'e', 'f', 'a', 'g', 'b', 'h', 'c'}
{'i'}
set()

4.set的常用方法

4.1 set集合的增删改查操作

  • add 用于加入元素
  • update 用于集合的合并
  • remove 当移除一个集合里没有的元素时,报错
  • discard 当移除一个集合里没有的元素时,不会报错
  • del 仅可对集合本身使用,不可用于元素,因为元素在集合里为混乱排放,无下标
  • clear 清空集合,留下空集合
  • pop 随机删除集合里的一个元素
#1.给set集合增加数据
person ={"student","teacher","babe",123,321,123}
person.add("student") #如果元素已经存在,则不报错,也不会添加,不会将字符串拆分成多个元素,区别update
print(person)
person.add((1,23,"hello")) #可以添加元组,但不能是list
print(person)
'''
{321, 'babe', 'teacher', 'student', 123}
{(1, 23, 'hello'), 321, 'babe', 'teacher', 'student', 123}
'''
# update用于集合的合并,可以把多个集合添加到一个集合里面。可以iterar的数据都可以添加成set集合
person.update("abc")#使用update不能添加字符串,会拆分
print(person)  #会将字符串拆分成a,b,c三个元素
'''
{321, 1, 3, 'b', 'c', 'teacher', (1, 23, 'hello'), 'a', 'babe', 'student', 123}
'''
set1 = set()
set1.add('武动乾坤')
set2 = {'jsy', '稻香', '爱的代价', '大碗宽面'}
set2.update(set1)
print(set2)
'''
{'大碗宽面', 'jsy', '爱的代价', '稻香', '武动乾坤'}
'''
#2.从set里删除数据
person.remove("student")#按元素去删除
print(person)
#print("student")如果不存在 ,会报错。
'''
{321, 1, 3, 'c', 'b', (1, 23, 'hello'), 'teacher', 'babe', 'a', 123}
'''
person.discard("student")#功能和remove一样,好处是没有的话,不会报错
ret = person.pop() #在list里默认删除最后一个,在set里随机删除一个。
print(person)
print(ret) #pop()返回的是被删除掉的那一项
'''
{1, 3, (1, 23, 'hello'), 'teacher', 'b', 'a', 'babe', 123, 'c'}
'''
#3.更新set中某个元素,因为是无序的,所以不能用角标
#所以一般更新都是使用remove,然后在add
#4.查询是否存在,无法返回索引,使用in判断
if "teacher" in person:
    print("true")
else:
    print("不存在")
'''
true
'''
#5.终极大招:直接清空set
print(person)
person.clear()
print(person)
'''
set()
'''

4.2 其它用法

交 并 差集操作交集 intersection;并集 union;差集 difference
可用运算符表示交集,并集,差集交集 & 并集 | 差集 -

#取两者的交集
b={1,23}
a={23,5}
ret=b.intersection(a)
print(ret)
#取两者的交集,intersection_update会改变b的内容
b={1,23}
a={23,5}
b.intersection_update(a)
print(b)
#union是把两个set集合合起来
a={"a","b","c"}
b={"a","wa"}
wt=a.union(b)
print(wt)
#difference表示的意思是a中的内容b是没有的,但是这个不会修改a自身的值,而是付给ret了
a={"12","14","234"}
b={"12","23"}
ret=a.difference(b)
print(ret)
#difference_update表示的意思是a中的内容b是没有的,执行完,会修改a的内容
a={"12","14","234"}
b={"12","23"}
a.difference_update(b)
print(a)
#symmetric_difference为把两个set集合里相同的内容当作边然后取这边两边的内容
a={"a","b","c"}
b={"a","wa"}
ret=a.symmetric_difference(b)
print(ret)
a.symmetric_difference(b)
print(a)
#可用运算符表示交集,并集,差集
set2 = {1, 2, 3, 4, 5}
set3 = {3, 4, 5, 6, 7, 8, 9}
print(set2 & set3)  # 交集符号  &
print(set2 | set3)  # 并集符号 |
print(set2 - set3)  # 差集符号 -
b={1,23}
a={23,5}
#如果a与b有集合的话,就返回false;如果没有集合的话,就返回true
ret=b.isdisjoint(a)
print(ret)
b={1,23,5}
a={23,5}
#issuperset说明b是否是a的父亲,如果是就输出true,如果不是输出false
ret=b.issuperset(a)
print(ret)
b={1,23,5}
a={23,5}
#b是否是a的子,如果是就输出true,如果不是就输出false
ret=b.issubset(a)
print(ret)

5.列表,元组,字典,集合

  • list: 允许重复,有序,有下标,可切片
  • tuple: 允许重复,里面元素不能进行增删改,只能查看
  • dict: 字典里的元素以键值对的形式存在 键:唯一性 值:可以重复
  • set: 元素不允许重复,且具有无序性

5.1 它们之间的类型转换

1.列表,元组,集合,此三者均可相互转

list----->tuple,set 列表转集合时,注意不能有重复元素,否则长度改变

tuple----->list,set

set----->list,tuple

2.当字典参与的转换时,需特殊对待

dict----->list,tuple 仅能将字典的键转换,不能将值转换

list----->dict 列表内必须是列表或是元组,且其中只有两个元素时,可转

list = [['a', {1}], ('', 2), ('c', 3)]
print(dict(list))

输出:

{‘a’: {1}, ‘’: 2, ‘c’: 3}

5.2 集合和列表方法上的区别

正是由于集合的无序性,没有下标,故在方法上与列表有些差异。

  • append(添加元素) extend(实现列表的拼接)
  • insert(在某一下标插入元素) ----->listadd(添加元素) update(两个集合的合并) ---->set

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详细介绍Python中的set集合

    目录 Python中的set集合 一.集合是什么? 二.set集合怎么用? 1.创建set集合 2.删除set集合 3.访问set集合元素 4.删除集合中的元素 5.向集合中添加元素 三.set集合的交并补 1.交集 2.并集 3.差集 四.set中的其他方法 五.frozenset 集合 Python中的set集合 一.集合是什么? 集合是什么呢?相信读者朋友们哪怕是没有用过集合这个数据类型.也一定在数学课堂上听过集合这个名词.数学中的集合是一个基本概念,说白了一堆不重复的数字可以组成一个集合

  • Python 集合之set详解

    目录 引言 集合的定义 集合常用操作 集合添加元素 集合移除元素 集合统计.清空元素 集合元素获取(遍历) 集合之间的运算 集合差运算 - 集合并运算 | 集合交运算 & 集合异或运算 ^ 应用场景 普通for循环去重 利用集合简单去重 去重保持原来的顺序 总结 引言 set(集合)虽然用的很少,但它是一个无序的不重复元素序列,用来简单的去重挺快的. 集合的定义 set(集合) 与列表类似,不同之处在于集合的 元素不重复 集合和字典一样也是用 {} 定义,但元素之间使用 , 分隔,或者使用 se

  • python-字典dict和集合set

    目录 1.字典 字典的相关操作 获取字典的长度 2.集合 1.字典 字典是python中的一种数据结构. 它的内容由**键-值(key-value)**的方式存在. dict拥有良好的查询速度,dict中值可以是任意python对象,对此对一个key赋value,后面的value会把前面的value覆盖. 字典的相关操作 # 字典中的内容放在大括号{}里,键值之间用冒号分隔,键值队之间用逗号 # method 1 myd = {'name': 'lmy', 'age': '19'} l = [(

  • python3基础之集合set详解

    目录 集合set 1.集合定义 2.集合基础操作 固定集合 1.定义 2.作用 基础操作 集合set 1.集合定义 1.由一系列不可重复的不可变类型变量组成的可变映射容器 2.相当于只有键没有值的字典(键则是集合的数据) 2.集合基础操作 1.创建空集合: 集合名 = set() 集合名 = set(可迭代对象) set01 = set() set01 = set("abcd") 2.创建具有默认值集合 集合名 = {1,2,3} 集合名 = set(可迭代对象) set01 = se

  • Python 数据类型--集合set

    目录 一.定义 二.操作 三.运算 一.定义 集合中的元素是无序的.唯一的.不可变的类型.集合是一个特殊的列表,可以对数据去重. lists = [1,3,5,7,3,4,6,2,7,9] print(set(lists)) 使用大括号{}或set()函数吧数据集合在一起. set()中的参数可以是元组.字符串.列表,还可以是一个集合.这个参数只要是一个序列即可. 创建一个空集合必须用set(),不能使用大括号.{}是用来定义空字典的. 二.操作 add(),把要传入的元素作为一个整体添加到集合

  • Python学习之集合set

    目录 集合 (set) 一 .合集的一些常用命令 1.set 定义合集 2.add 添加元素 3.clear 清空 4.pop 随机删除一个元素 5.remove 指定删除 6.discard 指定删除 二.关系运算 1.交集 找到两个集合相同的元素 2.并集 合并两个集合 3.差集 保留前者与后者不同的元素 去除相同的元素 4.交叉补集 只保留两者不同的部分 5.isdisjoint 判断是否有交集返回布尔值 6.issubset判断后者是否包含前者 返回布尔值 7.issuperset判断前

  • Python集合set()使用的方法详解

    目录 1.集合的特点 2.set的建立 1.用set()函数创建set集合 2.add() 3.用{}创建set集合.空set集合用set()函数表示,不可a={}. 4.set集合的转化 3.常见使用注意事项 4.set的常用方法 4.1 set集合的增删改查操作 4.2 其它用法 5.列表,元组,字典,集合 5.1 它们之间的类型转换 5.2 集合和列表方法上的区别 总结 在python3中按数据类型的可变与不可变大致分为如下几种类型: 不可变数据(3个):Number(数字).String

  • Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >>> type(a1) str 创建一个字符串对象,其身份是指向它在内存中所处的指针(在内存中的位置) a1就是引用这个具体位置的名称 使用type()函数查看其类型 其值就是'abc' 自定义类型使用class 对象的类型用于描述对象的内部表示及其支持的方法和操作 创建特定类型的对象,也将该对象称为该类

  • python对于requests的封装方法详解

    由于requests是http类接口的核心,因此封装前考虑问题比较多: 1. 对多种接口类型的支持: 2. 连接异常时能够重连: 3. 并发处理的选择: 4. 使用方便,容易维护: 当前并未全部实现,后期会不断完善.重点提一下并发处理的选择:python的并发处理机制由于存在GIL的原因,实现起来并不是很理想,综合考虑多进程.多线程.协程,在不考虑大并发性能测试的前提下使用了多线程-线程池的形式实现.使用的是 concurrent.futures模块.当前仅方便支持webservice接口. #

  • 一个Python优雅的数据分块方法详解

    目录 1.背景 2.islice 2.1示例 2.2只指定步长 3.iter 3.1常规使用 3.2进阶使用 4.islice 和 iter 组合使用 5.总结 1.背景 看到这个标题你可能想一个分块能有什么难度?还值得细说吗,最近确实遇到一个有意思的分块函数,写法比较巧妙优雅,所以写一个分享. 日前在做需求过程中有一个对大量数据分块处理的场景,具体来说就是几十万量级的数据,分批处理,每次处理100个.这时就需要一个分块功能的代码,刚好项目的工具库中就有一个分块的函数.拿过函数来用,发现还挺好用

  • Python 常用模块 re 使用方法详解

    一.re模块的查找方法: 1.findall   匹配所有每一项都是列表中的一个元素 import re ret = re.findall('\d+','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # ret = re.findall('\d','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # print(ret) 2.search 只匹配从左到右的第一个,等到的不是直接的结果,而是一个变量,通过这个变量的group方法来获取结果 impo

  • 在自动化中用python实现键盘操作的方法详解

    原来在robotframework中使用press key方法进行键盘的操作,但是该方法需要写被操作对象的locator,不是很方便,现在找到了一种win32api库写键盘操作的一个方法(注意:此方法被操作界面必须在顶层),首先,需要安装win32api的python库,使用命令: pip install pywin32 具体实现代码如下: import win32api import win32con class MyLibrary(object): def keybd_event(self,

  • 对Python实现累加函数的方法详解

    这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 Sum(1) =>1 Sum(1,2,3) =>6 MegaSum(1)() =>1 MegaSum(1)(2)(3)() =>6 实际上Sum就是Python自建的sum函数,它支持变参,变参怎么实现,自然是*args,所以很容易写出雏形: Sum def Sum(*args): count = 0 for i in args: count+=i return count 第二个函数就有点皮了,它要求有参数的时候

  • 对Python捕获控制台输出流的方法详解

    有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p = os.system("javac Test.java") print p except: print "\nexcept:\n" print traceback.format_exc() 如然编译成功会返回一个0,如果错误会返回一个非0的值给p,这种方法可以知道执行

  • python文件处理fileinput使用方法详解

    这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作,我们常用的open函数是对一个文件进行读写操作. fileinput模块的input()函数比open函数更高效和好用,体现在: input()函数生成一个迭代器,保证了在遇到大文件的读取时不会占用太大的内存. 用fileinput对文件进行循环遍历

  • Python安装依赖(包)模块方法详解

    Python模块,简单说就是一个.py文件,其中可以包含我们需要的任意Python代码.迄今为止,我们所编写的所有程序都包含在单独的.py文件中,因此,它们既是程序,同时也是模块.关键的区别在于,程序的设计目标是运行,而模块的设计目标是由其他程序导入并使用. 不是所有程序都有相关联的.py文件-比如说,sys模块就内置于Python中,还有些模块是使用其他语言(最常见的是C语言)实现的.不过,Python的大多数库文件都是使用Python实现的,因此,比如说,我们使用了语句import coll

随机推荐