python(四)字典,集合,可变与不可变对象(下)

1,集合python

python中的集合,能够和列表相比较,由于它们只存储key,而不存储value,可是列表有序而集合无序。同时它还能够和字典比较,由于集合和字典的实现方式同样,缘由是在集合中一样不可以放入“可变对象”,还记得字典中咱们说“字典的key必需要惟一”吗?惟一就表示是不可变吗?固然,在python的字典中是这样的!编程

2,集合的操做编程语言

理清了集合的基本状况,仍是须要练习一下,好比说:CURD -_-|| 函数

看图上那中写法,集合的建立方式仍是别致的。固然了,这个是在python中这么说的。学习

注意:spa

集合定义时须要使用“圆括号,而后里面传递一个list结构的参数”对象

集合打印出来的样子并不表示你打印的“set1”是个列表,而是python在告诉你,你的这个集合中有那么几个元素。内存

切记,切记!基础

那么问题来了,请问:我怎么知道我打印的“set1”是集合而非列表?变量

这个问题问的好!

一针见血!直中要害!可见功力之深厚,不知道少侠师从何处,何门何派。。。。巴拉巴拉。。。。。。。。

在这里就须要用到一个比较实用的python内置的函数了,固然了,就目前而言,咱们学习了几个python的内置函数呢?

答案就像是这样:

你看,是否是也简单!

type方法:用来打印一个变量的类型

一样,也能够对集合进行增,删,咱们截(画)个图来看看:

至此,集合的学习就结束了?

(⊙o⊙)…不!

有没有发现,我并无说你能够对集合进行“改”操做?

那能不能对集合进行“改”操做呢?

首先要明确,你想说的“对集合进行改操做”是什么意思,那一般我所指的意思是:把集合中的某个元素例如“a”变成“b”的过程,我称它是“”对集合进行改操做。

可是,这里有个前提,你准备更改某一个元素,那么前提你得先找到它!

那么问题来了?在集合中怎么找到一个元素?

Think........................................................................................................

因此说,因为集合是无序的,那么经过下标来访问集合的元素是不可能的,可不能够经过key来找呢?

答案是否认的!

由于集合中就存储了一个key,你想找谁?

因此说:实际上,咱们没法对一个集合的元素作出修改!

3,集合的集合操做

集合的集合操做,讲求的是:并,交,差

问一个问题:集合中的元素可不能够重复?(←__← 呵呵)

这样呢,集合的操做就告一段落了!

同时呢,关于python基础相关的变量,常量,基本数据类型和几种扩展数据类型的学习和相关的基本操做,就学习

~\(≧▽≦)/~啦啦啦

好好好,鼓掌鼓掌 ^_^ ^_^ ^_^

4,论对象的可变与不可变

要时刻牢记一句话:python中对象的建立是之内容为主,而非“变量”!

在讨论以前须要普及一个函数:id , 用来获得一个变量的内存地址

有什么用呢?

咱们都知道,变量最终是要存入到内存中的,而内存是编了号的,因此,一个变量在内存中就会有一个惟一的编号和它对应!

使用方法咱们仍是画个图来讲一下,就像是这样:

在python中,当你建立一个“内存中没有的东西”的时候,python才会为它从新分配内存,若是说你建立的一个东西,以前在内存中已经存在过了,那么python会把你的变量指向这个已经存在的东西,而不是从新分配内存。

这也就是我说的,python中分配内存是以“内容为准”而非“变量”!

若是你不理解,那么请看下面这个例子:

就像上面看到的,若是是在其它的编程语言中,变量“varx”虽然通过从新赋值,可是它在内存中只有一份。也就是说,即便通过从新赋值,“vax”的内存地址是不变的,对吧?

可是在python中,若是你能套用上面我说的“准则”,那么也许你就猜到了“结局”

对,就是这样!

再次理解理解上面哥的“准则”,那你看下面这个例子,是否是就清晰多了呢?注意:变量名但是变了的(⊙o⊙)哦 

有了上面的基础,如今来看看关于集合、字典和元组中的key不可变,是个什么意思。

好比说集合,就像是这样:

你可能会惊讶,不是说集合的key不可变吗?怎么还能放个变量呢?并且。。。。。并且。。。。集合的元素值不是变了吗?

实际状况是,变量“varx”是个小婊砸,它能够一下子指向“aaa”这个对象,一下子指向“bbb”这个对象,而它自己没发生变化,而集合则很忠贞,它永远找的是变量“varx”指向的真正的内容,当它发现第二次集合的元素的内容和第一次的有不一样的时候,它自己不会发生变化,而是“硬生生的弄出一个分身”!而后就成了你看到的那样子!

好了,一下说那么多,确实挺累的!

留个做业:若是你在集合中,放一个列表会出现什么状况?解释下缘由看看!

5,补充:关于python中的比较,is  or  ==

python中用 == 来比较两个变量的值是否相等,而经过关键字 is 来比较两个变量是不是同一个对象,也就是两个变量是否指向同一块内存,也就是两个变量的 id 值是否相等!

那,结合已有经验,你可否猜中这个的结局?

是啊,它们就是一个 True  一个 False ( ⊙ o ⊙ )啊!

没有错啊,怎么啦?

---------------------------------------------华丽的分割线---------------------------------------------------

明天周日,不上班!

相关文章
相关标签/搜索