这篇文章将会分享关于python中关于列表(list)的一些相关知识。
前面我们已经学习了字符串(string)和数字(number),那么接下来我们将会把这些字符串或者数字组合到一起,从而进行一些运算。这些字符串或者数字的组合有四种,包括列表(list)、元组(Tuple)、集合(set)和字典(dictionary)。首先,我们学习最为重要的列表(list)相关知识。
一、列表的特征
列表是Python中最具灵活性的有序集合对象类型,与字符串不同的是:列表可以包含任何种类的对象,包括数字、字符串、甚至是其他列表。
列表都是可变对象,它支持在原处修改的操作。也可以通过指定的索引和分片获取元素,用中括号[ ]来定义。
比如有一个名为courses的列表,包含了几门课程(History, Math, Physics, CompSci),则应当写成如下格式:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
二、列表的基本操作
获取列表长度:len( )。举例如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
则输出结果为其长度:
1 | 4 |
返回其中某一个元素。举例如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
这里需要提一下,在python中序列号是从0开始算起。[0:2]代表列表中第一和第二个元素,[1:3]则代表第二和第三个元素。
以上代码的输出结果如下:
1 | 4 |
三、在列表中添加、插入和删除元素
如果我们想要在一个列表后面加入一个元素,可以用append。还拿上面的courses列表来举例:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
将会返回如下结果:
1 | ['History', 'Math', 'Physics', 'CompSci', 'Art'] |
如果我们想要把元素插入到特定位置,则可以用insert。例子如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
则会在index为0的位置插入PE,结果如下:
1 | ['PE', 'History', 'Math', 'Physics', 'CompSci'] |
那么,我们如果插入的是一个列表(list)那应该怎么办呢?是不是还可用前面提到的append或者insert?我们试一下看看得到什么结果。
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
其返回结果为:
1 | ['History', 'Math', 'Physics', 'CompSci', ['Art', 'Education']] |
我们发现,用insert或者append会把列表本身作为一个元素插入进去。一般来说,这并不是我们想要的。那么我们应该怎么在一个列表中插入另一个列表呢?这就用到了extend。用法如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
其运行的结果为:
1 | ['History', 'Math', 'Physics', 'CompSci', 'Art', 'Education'] |
我们发现,这次我们得到了想要的结果:第二个列表中的元素分别合并到了第一个列表中。
接下来我们讲怎么从列表中删除某个元素。常用的删除方法有两个:remove( )和pop( )。先说说remove( ),remove( ) 是删除首个符合条件的元素。用法如下:
1 | courses = ['History', 'Math', 'Physics', 'CompSci', 'Art', 'Education'] |
运行程序,Math元素将会被移除,然后得到如下结果:
1 | ['History', 'Physics', 'CompSci', 'Art', 'Education'] |
我们再来看看pop( ):
1 | courses = ['History', 'Math', 'Physics', 'CompSci', 'Art', 'Education'] |
将会得到如下运行结果:
1 | Education |
我们会发现,pop是根据索引(元素所在位置)来删除的。并且,pop会返回弹出的那个数值。
四、列表中元素的排序和筛选
如果我们想要把一个列表中的元素顺序倒过来,应该怎么做呢?这时候我们可以用到reverse( )。用法如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
那么列表中元素将会反过来排列,得到如下结果:
1 | ['CompSci', 'Physics', 'Math', 'History'] |
如果我们想要把列表中元素按照字母表的顺序排列,则会用到sort( )。用法如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
那么列表中元素将会以首字母按照字母表顺序排列,得到如下结果:
1 | ['CompSci', 'History', 'Math', 'Physics'] |
如果列表中元素是数字,则会按照从小到大排列。还可以用max( )、min( )和 sum( )对数字进行最大值、最小值和求和的计算。用法如下:
1 | nums = [1, 5, 3, 8] |
运行结果如下:
1 | [1, 3, 5, 8] |
如果我们不想按照正序排列,则可以给sort加一个条件sort(reverse = True)来实现。举例如下:
1 | ums = [1, 5, 3, 8] |
运行结果如下:
1 | [8, 5, 3, 1] |
五、在列表中查找元素
如果我们想要查找某一个元素是否在列表中,或者想要知道某个特定元素的位置,可以用如下方法来实现:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
其运行输出结果为:
1 | False |
Flase表示列表中没有art元素,第二个输出的1给出了我们Math在列表中处在第二个元素的位置(第一个元素为0)。
六、列表中的元素按照指定格式输出和还原
还是上面那个courses的列表,如果我们不想要按照原来的列表格式输出,而是想要每个元素之间都隔一个逗号或者短横线输出,那该怎么办呢?这时候我们可以用join( )来把列表中元素按照特定格式来组成一个字符串。举例如下:
1 | courses = ['History', 'Math', 'Physics','CompSci'] |
将会得到如下输出结果:
1 | History, Math, Physics, CompSci |
我们这时候又想把原先变成字符串的列表还原,又该用什么方法呢?这时候可以用split( )将字符串还原为列表。举例如下:
1 | course_str = History - Math - Physics - CompSci |
其运行结果如下:
1 | ['History', 'Math', 'Physics', 'CompSci'] |