菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python3 集合

集合(set)是一个无序的不重复元素序列。

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。

创建格式:

parame = {value01,value02,...}
或者
set(value)

以下是一个简单实例:

set1 = {1, 2, 3, 4} # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7]) # 使用 set() 函数从列表创建集合

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

更多实例演示:

实例(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'}

类似列表推导式,同样集合支持集合推导式(Set comprehension):

实例(Python 3.0+)

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

集合的基本操作

1、添加元素

语法格式如下:

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'}
>>>

2、移除元素

语法格式如下:

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 "<stdin>", line 1, in <module>
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)

输出结果:

Runoob

多次执行测试结果都不一样。

set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

3、计算集合元素个数

语法格式如下:

len(s)

计算集合 s 元素个数。

实例(Python 3.0+)

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3

4、清空集合

语法格式如下:

s.clear()

清空集合 s。

实例(Python 3.0+)

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

5、判断元素是否在集合中存在

语法格式如下:

x in s

判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

实例(Python 3.0+)

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False
>>>

集合内置方法完整列表

方法 描述
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素
len() 计算集合元素个数
AI 思考中...

6 篇笔记 写笔记

  1. #0

    Nine

    dai***[email protected]

    627

    s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:

    • s.update( {"字符串"} ) 将字符串添加到集合中,有重复的会忽略。
    • s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
    >>> thisset = set(("Google", "Runoob", "Taobao"))
    >>> print(thisset)
    {'Google', 'Runoob', 'Taobao'}
    >>> thisset.update({"Facebook"})
    >>> print(thisset) 
    {'Google', 'Runoob', 'Taobao', 'Facebook'}
    >>> thisset.update("Yahoo")
    >>> print(thisset)
    {'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}
    >>>

    Nine

    dai***[email protected]

    8年前 (2018年06月25日)
  2. #0

    yijiarenppaa

    122***[email protected]

    253

    set() 中参数注意事项

    1.创建一个含有一个元素的集合

    >>> my_set = set(('apple',))
    >>> my_set
    {'apple'}

    2.创建一个含有多个元素的集合

    >>> my_set = set(('apple','pear','banana'))
    >>> my_set
    {'apple', 'banana', 'pear'}

    3.如无必要,不要写成如下形式

    >>> my_set = set('apple')
    >>> my_set
    {'l', 'e', 'p', 'a'}
    >>> my_set1 = set(('apple'))
    >>> my_set1
    {'l', 'e', 'p', 'a'}

    yijiarenppaa

    122***[email protected]

    8年前 (2018年06月30日)
  3. #0
    183

    集合用 set.pop() 方法删除元素的不一样的感想如下:

    1、对于 python 中列表 list、tuple 类型中的元素,转换集合是,会去掉重复的元素如下:

    >>> list = [1,1,2,3,4,5,3,1,4,6,5]
    >>> set(list)
    {1, 2, 3, 4, 5, 6}
    >>> tuple = (2,3,5,6,3,5,2,5)
    >>> set(tuple)
    {2, 3, 5, 6}

    2、集合对 list 和 tuple 具有排序(升序),举例如下:

    >>> set([9,4,5,2,6,7,1,8])
    {1, 2, 4, 5, 6, 7, 8, 9}
    >>> set([9,4,5,2,6,7,1,8])
    {1, 2, 4, 5, 6, 7, 8, 9}

    3、集合的 set.pop() 的不同认为

    有人认为 set.pop() 是随机删除集合中的一个元素、我在这里说句非也!对于是字典和字符转换的集合是随机删除元素的。当集合是由列表和元组组成时、set.pop() 是从左边删除元素的如下:

    列表实例:

    set1 = set([9,4,5,2,6,7,1,8])
    print(set1)
    print(set1.pop())
    print(set1)

    输出结果:

    {1, 2, 4, 5, 6, 7, 8, 9}
    1
    {2, 4, 5, 6, 7, 8, 9}

    元组实例:

    set1 = set((6,3,1,7,2,9,8,0))
    print(set1)
    print(set1.pop())
    print(set1)

    输出结果:

    {0, 1, 2, 3, 6, 7, 8, 9}
    0
    {1, 2, 3, 6, 7, 8, 9}
    
    8年前 (2018年08月10日)
  4. #0

    Sililililidary

    282***[email protected]

    47
    >>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    >>> y=set({'python'})
    >>> print(y.union(thisset))
    {'python', 'Taobao', 'Google', 'Facebook', 'Runoob'}

    输出结果:

    {'python', 'Google', 'Taobao', 'Facebook', 'Runoob'}

    y 的集合里此时只含有一个元素 'python',而如果不加花括号时,y 的集合里含有'p','y','t','h','o','n'五个元素。

    >>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    >>> y=set('python')
    >>> print(y.union(thisset))
    {'p', 'o', 'y', 'Taobao', 'h', 'Google', 'Facebook', 'Runoob', 'n', 't'}

    也可以使用括号:

    thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
    y=set(('python','love'))
    print(y.union(thisset))

    输出结果:

    {'Facebook', 'Runoob', 'Taobao', 'python', 'love', 'Google'}

    但是当 y 的集合里只有一个字符串时,结果与不加花括号一样。

    Sililililidary

    282***[email protected]

    7年前 (2019年11月03日)
  5. #0

    qinjeremy

    qin***[email protected]

    45

    列表的 sort 方法可以实现就地排序(无需创建新对象,字符串按首字母进行排序):

    a=[1, 51, 31, -3, 10]
    a.sort()
    print(a)
    s=['a','ab','3e','z']
    s.sort()
    print(s)

    输出:

    [-3, 1, 10, 31, 51]
    ['3e', 'a', 'ab', 'z']

    按集合中的字符长度进行排序:

    a=[1, 51, 31, -3, 10]
    a.sort()
    print(a)
    b=['a','ab','3ae','zaaa','1']
    b.sort()
    print(b)
    c=['a','ab','3ae','zaaa','1']
    c.sort(key=len)
    print(c)

    输出:

    [-3, 1, 10, 31, 51]
    ['1', '3ae', 'a', 'ab', 'zaaa']
    ['a', '1', 'ab', '3ae', 'zaaa']

    qinjeremy

    qin***[email protected]

    7年前 (2019年11月13日)
  6. #0

    vipkwd

    ser***[email protected]

    98

    本课一句话通俗话总结函数:

    添加元素

    setx.add(string|tuple|bool|number):void
    setx.update(y [,z...]):void # y、z 为 list|tuple|dict
    setx.clear():void
    setx.copy():set # 深拷贝(指向新的内存地址)
    

    删除元素

    setx.remove(y):void|KeyError #如删除不存在的元素,有报错
    setx.discard(y):void
    setx.pop():mixed #随机删除集合元素,并返回被删除的元素
    

    右全包含布尔真:判断 setx 集合的所有元素是否都包含在 sety 集合中

    setx.issubset(sety):bool
    >>> x = {"a", "b", "c"}
    >>> y = {"f", "e", "d", "c", "b", "a"}
    >>> x.issubset(y)
    True

    左全包含布尔真: 判断 sety 集合的所有元素是否都包含在原始 setx 的集合中

    setx.issuperset(sety):bool
    >>> x = {"a", "b", "c"}
    >>> y = {"f", "e", "d", "c", "b", "a"}
    >>> y.issuperset(x)
    True

    右半包含布尔取反:判断集合 sety 中是否有集合 setx 的任一元素(包含返回 False,不包含返回 True)

    setx.isdisjoint(sety):bool

    合并集合(并集):(注意:集合元素的去重、唯一性)

    setx.union(sety [, setz...]):set
    >>> x = {"a", "b", "c"}
    >>> y = {"f", "d", "a"}
    >>> z = {"c", "d", "e"}
    >>> x.union(y, z) 
    {'c', 'd', 'f', 'e', 'b', 'a'}

    左包含差集: 返回集合的差集,即返回的集合元素包含在第一个集合 x 中,但不包含在第二个集合 y(方法的参数)中

    setx.difference(sety):set

    左引用删除交集(无返回值,即直接修改原内存指向)

    setx.difference_update(sety):void
    >>> x,y
    ({'banana', 'cshit', 'vipkwd.com', 'alipay'}, {'google', 'runoob', 'facebook', 'alipay'})>>> type(x.difference_update(y))
    <class 'NoneType'>
    >>> x,y
    ({'banana', 'cshit', 'vipkwd.com'}, {'google', 'runoob', 'facebook', 'alipay'})

    左右差集:返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素

    setx.symmetric_difference(sety):set

    左引用删除交集且引用追加右差集(引用操作,无返回值)

    setx.symmetric_difference_update(sett):void

    左右交集:返回两个或更多集合中都包含的元素,即交集

    setx.intersection(sety[, seyz....]):set

    左引用交集

    setx.intersection_update(sety):void

    辅助理解:所有提到 "引用" 俩字的都是函数内部直接操作内存指向,故无返回值;反之:如果一个函数没有实质返回值,那么它一定是在函数内部改变了其他位置内容, 否则这个函数就是 dog shit,因为它不具有实质的意义。

    vipkwd

    ser***[email protected]

    6年前 (2020年09月05日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /