洗礼灵魂,修炼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 ...
随机推荐
- Java虚拟机说明书
JVM运行原理: Class的加载 过程:加载-验证-准备-解析-初始化-执行-卸载 加载:class文件(二进制字节流)被类加载器加载到内存中,将这个字节流所代表的静态存储结构转化为方法区的运行时数 ...
- Android studio 安装的安装一些问题
在国内如何更新android sdk? 由于众所周知的某些原因,我们无法直接连接android sdk的更新服务更新sdk,所以可以通过国内的ftp站点把常用的sdk组件如android platfo ...
- 极化码的matlab仿真(2)——编码
第二篇我们来介绍一下极化码的编码. 首先为了方便进行编码,我们需要进行数组的定义 signal = randi([0,1],1,ST); %信息位比特,随机二进制数 frozen = zeros(1, ...
- Ubuntu16.04下安装texlive
Ubuntu 16.04下安装texlive的步骤如下: 1.下载texlive 打开终端输入:sudo apt-get install texlive-full #下载这一过程会持续10-20分钟 ...
- Project 10:简单图像的绘制
目标:绘制如图图像 #include <stdio.h> int main() { int n,i,j,o,k=0; printf("请输入一个数:"); scanf( ...
- 我的hibernate学习记录(一)
之前已经过滤一下hibernate的简单的用法,但是近期有点时间,所以重新看下视频,敲下代码,翻下笔记,写博客与大家分享一下. hibernate简介 Hibernate是一个开放源代码的对象关系映射 ...
- mysql时间戳的获取
时间戳函数:current_timestamp() 在此位置添加时间戳函数. 然后整体的写法就是下图这样: 根据当前时间戳更新有没有打钩将决定你的时间是什么时间(一个是数据完成写入的时间,一个时间戳回 ...
- 团队作业9——Beta版本展示博客
一. 骆杰宁(组长) 风格:少说话,多做事. 擅长技术:Jsp 编程兴趣:GUI 希望角色:PM 一句话宣言:年轻是本钱,不努力就不值钱. 胡丹丹 风格:不断沉淀自己 擅长技术:擅长TCP/IP协议模 ...
- 201521123001《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1) 1.1 实验总结 答: 在老师的详细 ...
- 201521123069 《Java程序设计》 第5周学习总结
1. 本章学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 参考资料: 百度脑图 XMind 1.1 1.2 (1)用Arrays.sort ...