洗礼灵魂,修炼python(7)--元组,集合,不可变集合
前面已经把列表的基本用法讲解完
接着讲python的几大核心之——元组(tuple)
1.什么是元组?
类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对应的内存空间里的id依然不变,而不可变对象就是不支持原处修改,得重新赋值才行,但在重新赋值的时候,内存ID已经发生改变。
元组的特征是什么呢?下面会解释!
2.创建元组的两种方式:

注意:元组的特征是()没错,但是光有小括号是不行的
比如创建一个空的元组:

没有问题是吧,创建一个只有一个元素的元组呢:

咋回事呢?是的,只有一个小括号是不行的,还得有一个逗号【,】:

3.元组的方法:

可以看到,常用的方法只有count,index,其他带有修改意义的方法都没有
count和indexde的方法和列表方法是一样的,就不展示了
4.元组里面的元素不可更改
元组和列表在实际使用上非常相似,但就是不能更改:

报错意思就是元组不支持修改。
你可能会有个疑问了,既然元组这么局限,还不可以更改,那留它搞毛啊?
答:是的元组看起来没多大用处,其实仔细想,有时候我们定义好一些数据,是不希望它被更改的,这时如果用列表,你改一下数据,我改一下数据,到底谁的数据足够权威呢?是不是有点乱套?结合实际来看,比如百度账号,淘宝会员名等等的,是不是在初次创建后就会提示一旦创建无法更改的。所以python官方不是不知道这个问题,而是刻意搞出这么一个类型,方便不同的人使用。
5.元组也可以用索引访问元素和切片:

6.那既然元组无法更改,比如定义好一个后,我反悔了,我又相改一下可以不?可以的,但是已经不是原来那个了
方法a:

方法b:

7.删除元组

不是不可以更改吗?按照编程常识,删除也属于更改啊,是的,但是你忘了之前说过的,在python中,给变量赋值并不和其他语言一样,反而像是在其上贴上一个标签:
这是贴上标签后:

这是del 删除后:

并且a已经处于未定义状态

但是此时元组(2,6,7)还存在的,并且没有改变,python有一个回收机制,当回收机制发现内存里的某个参数不再被使用时,就会回收它,那时才会被删除,而且这时的删除操作不是被del相应的。,而如果你在实际中运用的话,假如你存放在服务器里,就会一直在的。
换句话就是你用del删除的是删除变量以及变量名与元组之间的联系,元组还在的并且没有改变。
接着,python的几大核心之——集合(set)
1.什么是集合:
集合同样类似列表,集合和列表一样是可变对象,但集合是无序的。集合的特征是花括号{}
2.创建集合的方式:

注意,当你想创建一个空集合时,会出现一个问题:

所以集合没有特定语法格式,只能通过set()创建
这个dict是字典的意思,在下面一章博文会详细讲。姑且记住不能创建空集合就行
3.集合的方法:

同样,常见的方法有:add,clear,copy,pop,remove,update,difference,intersection,union其他都用的很少
add:添加元素:

clear:清理所有元素,clear(),括号内不能带参数

copy:拷贝,复制

pop:删除元素,并且返回被删除的元素打印到屏幕上,注意不能带参数,因为pop本来里面放的得是索引,但是集合没有索引

remove:删除元素,这个要带参数,需要删除谁就放进去当参数

update:原处更新集合

也可以用另一个集合来更新本集合:

difference,intersection和union其实分别就是差集,交集,并集,是的,你学过高中数学就很好理解了
并且这三个方法分别以【-】【&】【|】代替

4.集合里的元素是无序,唯一的

无序:看起来毫无逻辑可言的排序

5.集合不支持索引访问元素

说到集合,那跟着得说到不可变集合(frozenset):
1.什么是不可变集合
其实其他和集合没区别,就是不可更改
2.创建不可变集合:

3.不可变集合的方法:

发现已经没有带有更改意义的方法了,其实你有没有发现,集合与不可变集合就像列表与元组的关系,是的,你想到这个就算理解了
里面的方法和集合的方法是一样的不做演示
其实不可变集合真的很少用,了解就好
洗礼灵魂,修炼python(7)--元组,集合,不可变集合的更多相关文章
- 003-guava 集合-不可变集合
一.概述 二.使用 2.1.不可变集合 1.为什么使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的:不可变对象被多个线程调用时,不存在竞态条件问题不可变集合不 ...
- Python成长笔记 - 基础篇 (三)python列表元组、字典、集合
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 一.列表和元组的操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义 ...
- Python黑帽编程2.3 字符串、列表、元组、字典和集合
Python黑帽编程2.3 字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...
- python数据类型之元组、字典、集合
python数据类型元组.字典.集合 元组 python的元组与列表类似,不同的是元组是不可变的数据类型.元组使用小括号,列表使用方括号.当元组里只有一个元素是必须要加逗号: >>> ...
- Python基础数据类型(数字、字符串、布尔、列表、元组、字典、集合等)
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...
- Guava学习笔记:Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...
- Immutable(不可变)集合
Immutable(不可变)集合 不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对 ...
- java代码之美(4)---guava之Immutable(不可变)集合
Immutable(不可变)集合 一.概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开.Collections是jdk提供的一个工具类 ...
- Object-C,NSSet,不可变集合
又到晚上了,继续码代码. 正在此时,老爸一个电话"海阔凭鱼跃,天高任鸟飞",老爸不在为老问题烦我了. 自由了,突然感觉压力好大啊. 将来混的太惨,可咋办啊- 第1个例子是,不可变集 ...
- [Google Guava] 2.1-不可变集合
范例 01 public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of( 02 "red&quo ...
随机推荐
- 谈MVVM
什么是MVVM? MVVM(模型-视图-视图模型,Model-View-ViewModal)是一种架构模式,并非一种框架,它是一种思想,一种组织与管理代码的艺术.它利用数据绑定,属性依赖,路由事件,命 ...
- centos 7 最小安装后 ip配置
安装玩CentOS7 后要进行 ip的配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 在里面输入 NAME=eth0 HWADDR=XX:XX:XX:X ...
- jsp页面附件上传暂存的处理
有没有遇到页面是新建一个新对象,对象里面需要上传附件,但是只有当对象保存时才将附件一同上传到数据库的情况? 这种情况的处理可以参考狐狸的思路: @jsp页面创建一个botton bn,该button的 ...
- Tornado模板
--------------------静态文件-------------------- 1.static_path:通过向web.Application类的构造函数传递一个名为static_path ...
- distinct和group by 去掉重复数据分析
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp40 用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同) ...
- Eslint配置
//ESLint 4.5.0,参考了eslint官方以及alloyteam团队配置 module.exports = { parser: 'babel-eslint', parserOptions: ...
- H5-html基础
什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...
- UVW代码漫谈(一)
博客园是个非常好的学习知识的地方,相信有很多人跟我一样,园龄3年,从博客园不知道拷了多少代码,看了多少博客,自己却一篇博客都没写过.真是罪过. 这次准备写几篇关于这个项目源码的阅读和理解的文章,大家一 ...
- JS学习二(循环)
JS中的循环结构 [循环结构的执行步骤] 1.声明循环变量: 2.判断循环条件: 3.执行循环体操作: 4.更新循环变量: 然后,循环执行2~4,知道条件不成立.跳出循环. [while 循环] wh ...
- 201521123065 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容 类设计:属性设计类型为priate并初始化. 文档注释:以/*开始,以*/结束. 继承:存在的 ...