1.列表

Python的列表对象是这个人语言提供的最通用的序列,列表是一个任意类型的对象的位置江面的有序集合,没有固定大小,大小可变,通过对偏移量进行赋值以及其他各种来列表的方法进行调用,确实能够修改列表的大小。

由于列表是序列的一种,列表支持所有上篇中对字符串所讨论过的序列操作,唯一的区别是起结果往往仍是列表而非字符串, 同样可以对列表进行索引,切片等操作。


列表没有固定的类型约束,如上面列表l中包含两种不同的数据类型(字符串,整型数字),列表没有固定大小,也就是说列表可以增加或者减小列表的大小,来响应其特定的操作


列表的append方法提供了从列表尾部插入新元素方式,pop方法移除列表中指定偏移量的一项。还有insert从任意位置插入, remove按照值移除列表元素。因列表是可变的,大多数列表

的方法都会直接改变列表对象。


尽管列表没有固定大小,Python仍然不允许访问不存在的元素,操作超出列表尾之外的索引会导致错误。


Python的核心数据类型有个很好的特性就是他们支持任意嵌套。能够以任意的组合对其进行嵌套,并可以多层嵌套, 这种特性的直接应用就是实现矩阵或者Python中的

“多维数组”。


同样的可以通过偏移和切片等方式进行取值。


处理序列的操作和列表的方法中,Python还包括了一个更高级的操作称为列表解析表达式, 从而提供了一种处理像矩阵这种结构的强大工具。如取矩阵中提取第二列:


亦可添加一些更复杂其他的操作:


同样的可通过dir方法来查看列表支持的一些其他方法。


2.字典

Python中的字典是一种映射。 映射是一个其他对象的集合, 但是他们是通过键而不是相对位置来存储。映射没有任何可靠的从左到右的顺序。他们简单的将键映射到

值。字典是Python核心对象集合中唯一的一种映射类型, 也具有可变性,随意更改, 按需求增大减小。

字典作为常量编写时写在大括号内, 并包含一些列的“键:值”对。当需要将键与一些列值相关联的时候,字典是很有用的。


可以通过键对这个字典进行索引来读取或改变键所关联的值。


与列表中禁止边界外的赋值不同, 对一个新的字典键赋值会创建该键:


字典同样支持嵌套,并且支持多种对象类型的嵌套。


如上所示, Python嵌套允许直接并轻松的建立复杂的信息结构。使用C这样的底层语言建立一个类似的结构会使用更多的代码, 并且需要事先安排生命结构体, 数组填写

值,将每一个连接起来等等步骤。在Python中这一切都是自动完成, 运行表达式就创建了整个嵌套的对象结构, 这也是Python作为脚本语言的优点之一。

同样重要的是, 在底层语言中, 当我们不需要再用该对象时,必须小心的释放掉所有的对象空间。在Python中当最后一次引用对象后, 这个对象的内存空间会被自动清理掉。

从技术上来说,Python具有一种叫做垃圾收集的特性,一旦某个对像最后一次引用被移除,空间会被立刻回收。

因为字典不是序列,不包含可靠的顺序,这意味着, 如果我们将字典打印出来, 他的键并不一定会与我们输入的顺序相同。

如果需要强调某种顺序的时候,常用的解决方法是通过字典的keys方法收集一个字典键的列表, 使用列表的sort方法进行排序, 然后使用for一次输出字典的内容:


也可以使用Python最新增加的sorted内置方法来对字典的键进行排序:


虽然字典能够通过给新的键赋值来增加字典的大小, 但是获取一个不存在的键的值仍然是一个错误:


获取一个并不存在的东西往往就是一个程序的错误, 但是在一些程序中, 编写程序是并不是总知道当前存在什么键, 这种情况下in关系表达式允许我们查询字典中

一个键是否存在: