全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式
摘要:
在Python中,列表是一个非常灵活且常用的复合数据类型。它允许存储多个项,这些项可以是任意的数据类型,包括其他列表。列表推导式是一种简洁的方式来创建和操作列表。
文档和代码获取:
本文档主要介绍如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail代码软件对代码进行可视化阅读便于读者理解。
正文
列表简介
列表是Python中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索引是0,第二个索引是1,依此类推。在Python中,列表通常用于存储一些“相同”类型对象的实例;字符串或数字的列表(但是列表的数据项不需要具有相同的类型)。更常见的是,我们自己定义的对象所组成的列表。如果我们想要按照某种顺序存储一些项目,那么就该使用列表。通常是按照这些元素被插入的顺序,但是它们也可以按照某种标准进行排序。列表都可以进行的操作包括索引,切片,加,乘,检查成员。
尽管列表的数据项不需要具有相同的类型,但是不要使用列表来收集单独项目的不同属性。例如,我们需要一个特定形状所有属性的列表。对于这种情况,元组、命名元组、字典以及对象都是更合适的选择。
列表的常用方法如下:
|
方法 |
描述 |
|
list.append(x) |
把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 |
|
list.extend(L) |
通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。 |
|
list.insert(i, x) |
在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。 |
|
list.remove(x) |
删除列表中值为 x 的第一个元素。 |
|
list.pop([i]) |
从列表的指定位置移除元素,并将其返回。 |
|
list.clear() |
移除列表中的所有项,等于del a[:]。 |
|
list.index(x) |
返回列表中第一个值为 x 的元素的索引。 |
|
list.count(x) |
返回 x 在列表中出现的次数。 |
|
list.sort() |
对列表中的元素进行排序。 |
|
list.reverse() |
倒排列表中的元素。 |
|
list.copy() |
返回列表的浅复制,等于a[:]。 |
列表推导式
列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
例如,创建平方值的列表:
squares = []for x in range(10): squares.append(x**2)print(squares)print(x)
注意,这段代码创建(或覆盖)变量 x,该变量在循环结束后仍然存在。下述方法可以无副作用地计算平方列表:
squares = [x**2 for x in range(10)]
每个列表推导式都在for之后跟一个表达式,然后有零到多for或if子句。返回结果是一个根据表达从其后的for和if上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。
list = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]print(list)
等价于:
list = []for x in [1,2,3]: for y in [3,1,4]: if x != y: list.append((x, y))print(list)





