洗礼灵魂,修炼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 ...
随机推荐
- python2 urllib2抓取51job网的招聘数据
#coding=utf-8 __author__ = "carry" import sys reload(sys) sys.setdefaultencoding('utf-8') ...
- MEF IOC使用
IOC介绍 IOC:控制反转,DI:依赖注入.按我的理解应该是一个东西.作用目前我看到的主要是解除各个层之间的强耦合,实现接口分离.MEF优点: 1.net4 自带,无需安装扩展(引用System.C ...
- 关于vue的一些总结
最近学习了一段时间的vue js 除了路由没用过之外 基本上其他的都用过了 对于vue的一些用法 在此做一个总结. 开始使用vue之前 需要导入vuejs这个文件到项目中 <scrip ...
- C# checked和unchecked详解
1.对基元类型执行的许多算术运算都可能造成溢出,有如下代码: Byte b=100; b=(Byte)(b+200); 简单的解读上面的代码: 第一步,将所有的操作数都扩大至32位或者64位(根据操作 ...
- java性能真的差吗
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt275 我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.n ...
- 设置SQL Server 2005数据库使之可以远程连接
1. 开启sql2005远程连接功能,开启办法如下: 配置工具->SQL Server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Databas ...
- 阿里云Maven地址
GFW 呵呵呵 下载几个jar要几个小时.....伤透了 直接替换国内阿里云的maven镜像地址 速度嗖嗖嗖的.... 配置 修改maven根目录下的conf文件夹中的setting.xml文件,内 ...
- Java线程:线程栈模型
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运 ...
- Ubuntu操作系统下安装JDK、tomcat、mysql
1.先从安装虚拟机开始 01.首先打开VMware虚拟机. 02.然后,进入home主页,点击"create a New Virtual Machine"一栏,就会弹出一个 ...
- 201521123026 《Java程序设计》第6周学习总结
1. 本章学习总结 请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结 2. 书面作业 Q1.clone方法 1.1 Object对象中的clone方法是被prot ...