元组基础

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

创建元组

#
# 主题:创建元组
#if __name__ == '__main__':# 使用 ()t = ('python', 'world', 98)print(t)                    # ('python', 'world', 98)print(type(t))              # <class 'tuple'>t = 'python', 'world', 100print(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]))         # 2317358293576t[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)                  # Falseprint(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)                 # 若要删除的元素不在原集合中,则报错 KeyErrorprint(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)             # Trueprint(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))    # Trueprint(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源码中的学习笔记_第6章_元组相关推荐

  1. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  2. CNN入门详解及TensorFlow源码实现--深度学习笔记

    CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...

  3. android源代码 abi,Android内核源码Abi目录学习笔记

    好记性不如烂笔头,今天要学习的是Android中Abi目录下的代码.下面是基本的学习的笔记的汇总. 首先是include中的头文件的说明. 在cxxabi的头文件中主要需要掌握下面的几个点: 1.这个 ...

  4. vue 拷贝 数组_vue源码中值得学习的方法

    最近在深入研究vue源码,把学习过程中,看到的一些好玩的的函数方法收集起来做分享,希望对大家对深入学习js有所帮助.如果大家都能一眼看懂这些函数,说明技术还是不错的哦. 1. 数据类型判断 Objec ...

  5. python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...

    (附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...

  6. 《Python源码剖析》读书笔记

    <Python源码剖析>电子书下载 http://download.csdn.net/detail/xiarendeniao/5130403 Python源码在官网有下载链接,用ctags ...

  7. stl源码剖析_《STL源码剖析》学习笔记——空间配置器

    目录 1. 空间配置器概述 2. 构造和析构基本工具 3. 空间的配置与释放,std::alloc 4. 内存基本处理工具 1. 空间配置器概述 从STL的实现角度来看,空间配置器的位置尤为重要,整个 ...

  8. puppet最新源码包安装学习笔记

    最近去面试了2家大的电商网站的运维工作,公司对系统的自动化管理,虚拟化,mysql集群,系统性能的优化和shell及python编程的要求都比较高,虽然没有面试成功,但也明白了2013年自己学习的目标 ...

  9. 源码 状态机_LLVM学习笔记(1)--初探源码

    一直耳闻LLVM相比于GCC: well documented 架构灵活,前后端解耦符合龙书的讲解 昨天读到了一篇虽然概括却很周到的llvm入门导引 陈钦霖:LLVM Pass入门导引​zhuanla ...

  10. 从Mybatis源码中,学习到的10种设计模式

    一.前言:小镇卷码家 总有不少研发伙伴问小傅哥:"为什么学设计模式.看框架源码.补技术知识,就一个普通的业务项目,会造飞机不也是天天写CRUD吗?" 你说的没错,但你天天写CRUD ...

最新文章

  1. springframework引入不进来_啥?你不知道JWT
  2. xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
  3. WebSocket 从入门到写出开源库
  4. android系统五大布局,android 五大布局文件
  5. css 模拟器方向_GDS变方向动态循环单剪实验系统VDDCSS
  6. eclipse在server中tomcat server找不到的问题
  7. android加号底部导航栏,EasyNavigation Android 底部导航栏████几行代码实现 Tab 导航(随意定制加号,带红点消息提示) @codeKK Android开源站...
  8. 《XXX重大技术需求征集系统》的可用性和可修改性战术分析
  9. Leetcode每日一题:155.min-stack(最小栈)
  10. 初二生态系统思维导图_鑫讲堂:初二年级十一月微讲座汇报(二)
  11. access里面的表达式运用_Access表达式
  12. 失败的面试小记,项目面,酷家乐面筋
  13. 不透明度十六进制_十六进制不透明度表
  14. DELL服务器运行硬件检测
  15. Minecraft Mod开发:1-配置工作环境
  16. python floor函数_Python floor() 函数 - Python 教程 - 自强学堂
  17. 工作量单位-人月、人日、人时 详解
  18. 书中第十章货币实验Currencies App在openexchangerates.org上的开发者密钥
  19. http://blog.sina.com.cn/s/blog_ad1c3bdf0102uz99.html
  20. 关于CSS与HTML知识点总结(一)

热门文章

  1. Customizing AxWebBrowser, make it powerful
  2. Qt5学习笔记之QQ登录界面五:切换界面
  3. 关于大型网站技术演进的思考(六)-存储的瓶颈6
  4. (C语言)队列的链式实现(数据结构十一)
  5. Exchange 2003 和 Exchange 2007最大处理器数、内存支持比较
  6. 浏览器输入网址回车发生的事情?--
  7. 学习使用TestNG进行数据驱动测试
  8. 【Ansible 文档】【译文】Ad-Hoc 命令介绍
  9. kindeditor 文件上传在 spring mvc下的使用
  10. (译)Windows Azure:移动后端开发的主要更新