朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow
声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好的理解人工智能技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是要由所写,所以不如我的人工智能技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!
在上篇文章的例子中,我们使用字典去描述一个人物,用了三个键。如果信息更复杂一些,例如我们需要去记录名(first name)和姓(last name),还有多个工作(job)的头衔的话。那么我们可以使用字典嵌套另一个Python对象来实现上面的情况。下边的这个字典,一次将所有内容编写进一个常量,记录了更多的结构化信息。
>>> rec = {'name': {'first': 'Bob','last': 'Smith'},
'job': ['dev','mgr'],
'age': 40.5}
在这里,在顶层再次使用了三个键的字典(键分别是“name”、“job”和“age”),但是值的情况变得复杂得多:一个嵌套的字典作为name的值,支持了多个部分;并用一个嵌套的列表作为job的值从而支持多个角色和未来的扩展。我们可以通过键来获取上面字典中的各个组件。
>>> rec['name'] # 'name' is a nested dictionary
{'last': 'Smith','first': 'Bob'}
>>> rec['name']['last'] # Index the nested dictionary
'Smith'
>>> rec['job'] # 'job' is a nested list
['dev','mgr']
>>> rec['job'][-1] # Index the nested list
'mgr'
>>> rec['job'].append('janitor') # Expand Bob's job description in-place>>> rec
{'age': 40.5,'job': ['dev','mgr','janitor'],'name': {'last': 'Smith','first': 'Bob'}}
注意这里的最后一个操作是展示如何扩展嵌入job列表的。因为job列表是字典所包含的一部分独立的内存,它可以自由地增加或减少。
本片文章的真正目的是为了说明Python核心数据类型的灵活性。就像你所看到的那样,嵌套允许直接并轻松地建立复杂的信息结构。使用C这样的底层语言建立一个类似的结构,将会很枯燥并会使用更多的代码——我们将不得不去事先安排并且声明结构和数组,填写值,将每一个都连接起来等。在Python中,这所有的一切都是自动完成的——运行一个表达式就创建了整个的嵌套对象结构。事实上,这是Python这样的脚本语言的主要优点之一。
同样重要的是,在底层语言中,当我们不再需要该对象时,必须小心地去释放掉所有对象空间。在Python中,当最后一次引用对象后(例如,将这个变量用其他的值进行赋值),这个对象所占用的内存空间将会自动清理掉:
>>> rec = 0 # Now the object's space is reclaimed
从技术来说,Python具有一种叫做垃圾收集的特性,在程序运行时可以清理不再使用的内存,并将你从必须管理代码中这样的内存细节中解放出来。在Python中,一旦一个对象的最后一次引用被移除,空间将会立即回收。