IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python源码中的学习笔记_第6章 -> 正文阅读

[Python知识库]python源码中的学习笔记_第6章

元组基础

#
# 主题:元组基础
#

if __name__ == '__main__':
    # 元组是不可变序列,没有增删改操作
    # 修改不可变序列后,会生成新的对象,储存在新的位置
    # 可变序列:列表、字典
    # 不可变序列:字符串、元组

创建元组

#
# 主题:创建元组
#

if __name__ == '__main__':
    # 使用 ()
    t = ('python', 'world', 98)
    print(t)                    # ('python', 'world', 98)
    print(type(t))              # <class 'tuple'>

    t = 'python', 'world', 100
    print(t)                    # ('python', 'world', 100)
    print(type(t))              # <class 'tuple'>

    # 使用 tuple 函数
    t1 = tuple(('python', 'world', 99))
    print(t1)                   # ('python', 'world', 99)
    print(type(t1))             # <class 'tuple'>

    # 元组中只含有一个元素时,要加上逗号
    t2 = (10, )
    print(t2)                   # (10,)
    print(type(t2))             # <class 'tuple'>

    # 创建空元组
    t = ()
    print(t)                    # ()
    t = tuple()
    print(t)                    # ()

元组设计成不可变序列的原因

#
# 主题:元组设计成不可变序列的原因
#

if __name__ == '__main__':
    # 可以规避因修改数据而导致的错误

    # 在其他语言中,多个程序访问同一个对象时,需要锁的概念
    # 元组在多任务环境下,同时操作对象时不需要加锁。因为元组的元素都是只读的而不能修改的

    # 元组中对象是不可变对象,则不能再引用其他对象
    # 元组中对象是可变对象,则可变对象的引用不允许改变,但数据可变

在这里插入图片描述

#
# 主题:元组设计成不可变序列的原因
#

if __name__ == '__main__':
    # 元组中对象是不可变对象,则不能再引用其他对象

    t = (10, [20, 30], 9)
    print(t)                # (10, [20, 30], 9)
    print(type(t))          # <class 'tuple'>
    for i in range(0,3):
        print(t[i], type(t[i]), id(t[i]))   # t[0] = 10, t[1] = [20, 30], t3 = 9
                                            # type(t[0]) = int, type(t[1]) = list, type(t[2]) = int
                                            # t 中三个对象的地址不相同

    # 元组中对象是可变对象,则可变对象的引用不允许改变,但数据可变
    
    # t[1] = 100            # 报错,因为元组不允许修改元素
    print(id(t[1]))         # 2317358293576
    t[1].append(100)        # 向 t[1] 的末尾添加元素
    print(t)                # (10, [20, 30, 100], 9)
                            # t[1] 是可变序列,允许增删改
    print(id(t[1]))         # 2317358293576
                            # 添加前后,t[1] 的地址未发生改变

遍历元组

#
# 主题:遍历元组
#

if __name__ == '__main__':
    t = ('python', 'world', 99)
    for item in t:
        print(item)

集合基础

在这里插入图片描述

#
# 主题:集合
#

if __name__ == '__main__':
    # 可变序列:列表、字典、集合
    # 集合的存储地址与存储先后顺序无关,故集合中的元素出现顺序和储存的先后顺序无关(说明集合中的元素无序)

创建集合

#
# 主题:创建集合
#

if __name__ == '__main__':
    # 使用 {}
    s = {2, 3, 4, 5, 6, 7, 7}
    print(s)                # {2, 3, 4, 5, 6, 7}
                            # 集合中的元素不能重复

    # 使用 set 函数
    s = set(range(6))
    print(s)                # {0, 1, 2, 3, 4, 5}
    print(type(s))          # <class 'set'>

    s = set([1, 2, 3, 4, 5])# 将数列转换为集合
    print(s)                # {1, 2, 3, 4, 5}
    print(type(s))          # <class 'set'>

    s = set((1, 2, 3, 4))   # 将元组转换为集合
    print(s)                # {1, 2, 3, 4}
    print(type(s))          # <class 'set'>

    s = set('python')       # 将字符串转换为集合
    print(s)                # {'h', 't', 'o', 'p', 'n', 'y'}
                            # 说明集合中的元素无序
    print(type(s))          # <class 'set'>

    s = set({1, 2, 3, 4})   # 将集合转换为集合
    print(s)                # {1, 2, 3, 4}
    print(type(s))          # <class 'set'>

    # 创建空集合
    s = {}
    print(type(s))          # <class 'dict'>
    s = set()
    print(type(s))          # <class 'set'>

判断集合元素

#
# 主题:判断集合元素
#

if __name__ == '__main__':
    s = {1, 2, 3, 4, 5}
    print(10 in s)                  # False
    print(10 not in s)              # True

添加集合元素

#
# 主题:添加集合元素
#

if __name__ == '__main__':
    s = {1, 2, 3, 4, 5}

    # add 方法添加一个集合元素
    s.add(6)
    print(s)                # {1, 2, 3, 4, 5, 6}

    # update 方法添加多个集合元素
    s.update({10, 20, 30})
    s.update([40, 50])
    s.update((60, 70))
    print(s)                # {1, 2, 3, 4, 5, 6, 70, 40, 10, 50, 20, 60, 30}

集合的删除操作

#
# 主题:集合的删除操作
#

if __name__ == '__main__':
    s = {1, 2, 3, 4, 5, 6, 7, 8}

    s.remove(8)                 # 若要删除的元素不在原集合中,则报错 KeyError
    print(s)                    # {1, 2, 3, 4, 5, 6, 7}

    s.discard(6)                # 若要删除的元素不在原集合中,则不报错
    print(s)                    # {1, 2, 3, 4, 5, 7}

    s.pop()                     # 删除任意元素
                                # 小括号内不能指定要删除的元素
    print(s)                    # {2, 3, 4, 5, 7}

    s.clear()                   # 清空集合
    print(s)                    # set()

集合间的关系

#
# 主题:集合间的关系
#

if __name__ == '__main__':
    # 判断两个集合是否相等
    s1 = {10, 20, 30, 40}
    s2 = {40, 30, 20, 10}
    print(s1 == s2)             # True
    print(s1 != s2)             # False
                                # 元素相同,则集合相等

    # 判断一个集合是否是另一个集合的子集
    s1 = {10, 20, 30, 40, 50, 60}
    s2 = {40, 30, 20, 10}
    s3 = {1, 2, 10}
    print(s2.issubset(s1))      # True  s2 是 s1 的子集
    print(s3.issubset(s1))      # False s3 不是 s1 的子集

    #  判断一个集合是否是另一个集合的超集
    s1 = {10, 20, 30, 40, 50, 60}
    s2 = {40, 30, 20, 10}
    s3 = {1, 2, 10}
    print(s1.issuperset(s2))    # True
    print(s1.issuperset(s3))    # False

    # 判断两个集合是否没有交集
    s1 = {10, 20, 30, 40, 50, 60}
    s2 = {40, 30, 20, 10}
    s3 = {1, 2, 10}
    print(s1.isdisjoint(s3))    # False s1 与 s3 有交集
    print(s2.isdisjoint(s3))    # False s2 与 s3 有交集

集合的数学操作

#
# 主题:集合的数学操作
#

if __name__ == '__main__':
    s1 = {10, 20, 30, 40}
    s2 = {20, 30, 40, 50, 60}

    # 交集
    print(s1.intersection(s2))          # {40, 20, 30}
    print(s1 & s2)                      # {40, 20, 30}

    # 并集
    print(s1.union(s2))                 # {40, 10, 50, 20, 60, 30}
    print(s1 | s2)                      # {40, 10, 50, 20, 60, 30}

    # 差集
    print(s1.difference(s2))            # {10}
    print(s1 - s2)                      # {10}

    # 对称差集
    print(s1.symmetric_difference(s2))  # {50, 10, 60}
    print(s1 ^ s2)                      # {50, 10, 60}

总结

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2021-10-04 12:48:17  更:2021-10-04 12:50:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:33:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码