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', 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章_元组相关推荐
- 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记
生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...
- CNN入门详解及TensorFlow源码实现--深度学习笔记
CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...
- android源代码 abi,Android内核源码Abi目录学习笔记
好记性不如烂笔头,今天要学习的是Android中Abi目录下的代码.下面是基本的学习的笔记的汇总. 首先是include中的头文件的说明. 在cxxabi的头文件中主要需要掌握下面的几个点: 1.这个 ...
- vue 拷贝 数组_vue源码中值得学习的方法
最近在深入研究vue源码,把学习过程中,看到的一些好玩的的函数方法收集起来做分享,希望对大家对深入学习js有所帮助.如果大家都能一眼看懂这些函数,说明技术还是不错的哦. 1. 数据类型判断 Objec ...
- python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...
(附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...
- 《Python源码剖析》读书笔记
<Python源码剖析>电子书下载 http://download.csdn.net/detail/xiarendeniao/5130403 Python源码在官网有下载链接,用ctags ...
- stl源码剖析_《STL源码剖析》学习笔记——空间配置器
目录 1. 空间配置器概述 2. 构造和析构基本工具 3. 空间的配置与释放,std::alloc 4. 内存基本处理工具 1. 空间配置器概述 从STL的实现角度来看,空间配置器的位置尤为重要,整个 ...
- puppet最新源码包安装学习笔记
最近去面试了2家大的电商网站的运维工作,公司对系统的自动化管理,虚拟化,mysql集群,系统性能的优化和shell及python编程的要求都比较高,虽然没有面试成功,但也明白了2013年自己学习的目标 ...
- 源码 状态机_LLVM学习笔记(1)--初探源码
一直耳闻LLVM相比于GCC: well documented 架构灵活,前后端解耦符合龙书的讲解 昨天读到了一篇虽然概括却很周到的llvm入门导引 陈钦霖:LLVM Pass入门导引zhuanla ...
- 从Mybatis源码中,学习到的10种设计模式
一.前言:小镇卷码家 总有不少研发伙伴问小傅哥:"为什么学设计模式.看框架源码.补技术知识,就一个普通的业务项目,会造飞机不也是天天写CRUD吗?" 你说的没错,但你天天写CRUD ...
最新文章
- springframework引入不进来_啥?你不知道JWT
- xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
- WebSocket 从入门到写出开源库
- android系统五大布局,android 五大布局文件
- css 模拟器方向_GDS变方向动态循环单剪实验系统VDDCSS
- eclipse在server中tomcat server找不到的问题
- android加号底部导航栏,EasyNavigation Android 底部导航栏████几行代码实现 Tab 导航(随意定制加号,带红点消息提示) @codeKK Android开源站...
- 《XXX重大技术需求征集系统》的可用性和可修改性战术分析
- Leetcode每日一题:155.min-stack(最小栈)
- 初二生态系统思维导图_鑫讲堂:初二年级十一月微讲座汇报(二)
- access里面的表达式运用_Access表达式
- 失败的面试小记,项目面,酷家乐面筋
- 不透明度十六进制_十六进制不透明度表
- DELL服务器运行硬件检测
- Minecraft Mod开发:1-配置工作环境
- python floor函数_Python floor() 函数 - Python 教程 - 自强学堂
- 工作量单位-人月、人日、人时 详解
- 书中第十章货币实验Currencies App在openexchangerates.org上的开发者密钥
- http://blog.sina.com.cn/s/blog_ad1c3bdf0102uz99.html
- 关于CSS与HTML知识点总结(一)
热门文章
- Customizing AxWebBrowser, make it powerful
- Qt5学习笔记之QQ登录界面五:切换界面
- 关于大型网站技术演进的思考(六)-存储的瓶颈6
- (C语言)队列的链式实现(数据结构十一)
- Exchange 2003 和 Exchange 2007最大处理器数、内存支持比较
- 浏览器输入网址回车发生的事情?--
- 学习使用TestNG进行数据驱动测试
- 【Ansible 文档】【译文】Ad-Hoc 命令介绍
- kindeditor 文件上传在 spring mvc下的使用
- (译)Windows Azure:移动后端开发的主要更新