python(四)字典,集合,可变与不可变对象(下) |
您所在的位置:网站首页 › python字典的键的值可变吗 › python(四)字典,集合,可变与不可变对象(下) |
1,集合 python中的集合,可以和列表相比较,因为它们只存储key,而不存储value,但是列表有序而集合无序。同时它还可以和字典比较,因为集合和字典的实现方式一样,原因是在集合中同样不能够放入“可变对象”,还记得字典中我们说“字典的key必须要唯一”吗?唯一就表示是不可变吗?当然,在python的字典中是这样的! 2,集合的操作 理清了集合的基本情况,还是需要练习一下,比如说:CURD -_-|| 看图上那中写法,集合的创建方式还是别致的。当然了,这个是在python中这么说的。 注意: 集合定义时需要使用“圆括号,然后里面传递一个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 ⊙ )啊! 没有错啊,怎么啦? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |