4.1 列表
列表是Python中的内置对象,它是Python中最灵活的有序集合对象。它有些功能和之前提到的字符串类型很像,但比字符串要灵活得多。列表可以包含任何种类的对象,不管是数字、字符串甚至是另外几个列表。同时,列表和字符串有着本质的不同,它是可变对象,我们可以通过指定偏移值和分片,列表方法调用以及删除语句等方法来实现在原处修改列表的操作。
接下来先通过一个关于分类加法计数(人教版高中数学选修2-3)的程序来了解一些关于列表的简单操作。这个程序是计算从北京到上海一共有多少种不同的走法(见图4.1)。
图4.1 分类加法图解
程序分为两段,第一段将不同的走法存入一个列表中,第二段将所有走法都展示给用户(将项从列表中取出)。具体程序如程序4.1所示。
程序4.1 计算北京到上海的走法:
输出:
分析:
由分类加法计数原理:若完成一件事有两类不同的方案,其中第一类方案中有m种不同的方法,第二类方案中有n种不同的方法,那么完成这件事一共有N=m+n种不同的方法。从北京到上海的走法数即飞机和火车这两类方案的方法总和。
下面回到程序中,由于我们在第3行的循环中直接使用了list的append()方法,所以在用之前要声明一下list是一个列表,如程序的第1行所示。我们使用“[]”表示一个空列表并赋值给list。声明列表之后,使用刚刚提到的append()方法并放在循环中。使用两个循环将北京到上海的走法附加到列表list中。
append()方法将项插入列表尾,注意列表的索引值同字符串相同,都是从0开始的。程序的第8行,使用一个len函数输出list的长度,由上文的分类加法可知,list的长度就是方法总和即要求的方法数。最后,我们来看第10行的for循环,因为列表是可循环对象,所以可以直接使用for…in语句遍历列表的所有元素,将每项输出。
通过程序4.1,是不是对列表有了一定了解?接下来我们列出一些关于列表的常用操作,这些都是很有代表性的操作,如表4.1所示。
表4.1 常用的列表操作
下面再简单介绍下关于表4.1的一些知识点。表中的L、L1、L2表示已经定义好的列表,如果要使用列表的操作的话一定要先声明,否则会报错。表中使用i作为列表的索引值,一定记住列表的索引值是从0开始的,X表示某一对象,它可以是任何类型的数据。
若是对表中的某些操作还不理解,可以在PyCharm中定义一个列表并对它操作,使用print(L)可以将整个列表内容输出。
接下来再通过一个例子练习一下列表的操作,假设有列表['a', 'b', 'c', 't', 'u', 'q', 'c', 'p', 'e', 'b'],其中有些项是重复的,我们要使用程序将重复项剔除。
程序4.2 除去列表中的重复项:
输出:
分析:
这个程序的步骤比较明了,在遍历list的同时我们使用一个if语句过滤掉重复出现的项,最后将不包含重复项的新列表输出。