上篇我们学习了python的字符串类型,了解了字符串常见操作和它的不变性,今天我们接着学习新的数据类型-列表,列表也是序列式的数据类型,跟字符串一样,支持下标和切片操作,但列表跟字符串不同的是它是可变类型,这个数据类型在后续我们编程中用的非常的多,比如将读出的IP放到列表中,然后读取执行,这些后续我们写实际脚本时再说,我们先从最基础的,如何创建列表开始:
1、创建列表方式,一种是用[],一种是用list()函数,这二种方法都可以创建一个列表,如下:
>>> lis = []
>>> lis
[]
>>> lis = [1,2,3,'a','c']
>>> lis
[1, 2, 3, 'a', 'c']
>>> st = 'abcdef'
>>> stlis = list(st)
>>> stlis
['a', 'b', 'c', 'd', 'e', 'f']
如果[]里什么都没有,就创建了一个空列表,在列表里的内容称为列表元素,元素类型可以使python支持的标准类型。
2、列表的元素数据访问,刚开始我们也说了,列表是序列类型,所以它支持切片和下标的访问,例子如下:
>>> stlis[0]
'a'
>>> stlis[0:4]
['a', 'b', 'c', 'd']
>>> stlis[-1:]
['f']
>>> stlis[-3:-1]
['d', 'e']
因为这个跟字符串操作非常类似,所以我们不在多说。
3、列表操作函数
关于列表的操作有很多的方便可用的函数,这里我们跟字符串一样,也挑一些比较常用的来举例说明下,其它函数如果后续用到我们再说。
append()函数: 作用是添加列表的元素在尾部,接收一个参数,然后将改元素加入列表的尾部,举例如下:
>>> lis.append('d')
>>> lis
[1, 2, 3, 'a', 'c', 'd']
extend()函数:作用是扩展一个列表,这个函数类似把两个列表相加,例如:
>>> lis
[1, 2, 3, 'a', 'c', 'd']
>>> others = ['e','f']
>>> lis.extend(others)
>>> lis
[1, 2, 3, 'a', 'c', 'd', 'e', 'f']
remove() : 作用根据指定的值删除一个元素,当列表元素被删除后,位于它后面的元素自动迁移,然后列表长度减一,举例:
>>> lis
[1, 2, 3, 'a', 'c', 'd', 'e', 'f']
>>> lis.remove(1)
>>> lis
[2, 3, 'a', 'c', 'd', 'e', 'f']
pop():这个函数会返回指定下标位置的元素,如果不给指定下标,它默认使用-1,例如pop(0)返回列表的头元素,pop()返回列表的尾部元素,但这个函数在获取后就会自动将这个元素在列表中删除,例如:
>>> lis
[2, 3, 'a', 'c', 'd', 'e', 'f']
>>> lis.pop()
'f'
>>> lis
[2, 3, 'a', 'c', 'd', 'e']
>>> lis.pop(0)
2
>>> lis
[3, 'a', 'c', 'd', 'e']
如果这个函数不带参数会比较有意思,因为它跟append()函数的作用相反,一个是从尾部加,一个是从尾部减,这个就是大学数据结构课程中的-栈,即后进先出,可以假设有个空列表,运行append()就是压栈的操作,pop()就是出栈的操作,那如果加入下标0,即pop(0),那这样列表就形成了一个队列,跟去公园买票排队一样,先进来的先出去,即先进先出,这也是一种队列方式,这两种方式在后续编程中非常有用,如果后续我们有用到,我们会详细说。
count()函数用来统计列表中元素的重复个数,如果我们生成了一个列表,想要获取某元素在列表中出现的次数,可以用这个函数,例如:
>>> lis
[3, 'a', 'c', 'd', 'e', 'e']
>>> lis.count('e')
2
>>> lis.count(3)
1
len()函数,跟字符串的len函数功能一样,返回列表的长度,这个比较简单就不多说了。
>>> len(lis)
6
>>> lis
[3, 'a', 'c', 'd', 'e', 'e']
基本函数我们就说讲这么多,后续有特殊的我们详细再谈,接下来我们说一下列表的一些关系操作
4、列表关系操作,in, not in
关系操作就是检查判断一个对象是不是一个列表的成员,如果存在返回True, 否则返回False, 一般常用与条件语句中,例如:
>>> lis
[3, 'a', 'c', 'd', 'e', 'e']
>>> 'a' in lis
True
>>> 'g' in lis
False
>>> 'g' not in lis
True
具体的条件语句我们后续会单独详细说,在这里就不展开了,这种关系操作后续编程中也非常有用。
5、列表转字符串操作
在日常处理列表中,有一个比较常见的操作就是要求将一个列表转成一个字符串,这里我们可以用join()函数实现,例如:
>>> lis
['a', 'c', 'd', 'e', 'e']
>>>
>>> ''.join(lis)
'acdee'
6、列表解析,这部分内容我们在讲循环的语句的时候会单独说,它在编程中也比较常用,这个功能可以让我们动态的生成列表。
写到这我们也基本把列表也说完了,除了这些数据类型,理解python的赋值语句(等于号)也非常关键,在最后我给出一个例子,请大家一起理解下这些语句的意义,如果有问题可以留言交流。
>>> a = 'x'
>>> lis = [a, 2]
>>> lis
['x', 2]
>>> lis = [a,2,"abc",False]
>>> lis
['x', 2, 'abc', False]
>>> a
'x'
>>> b = 'y'
>>> lis
['x', 2, 'abc', False]
>>> a = b
>>> a
'y'
>>> lis
['x', 2, 'abc', False]
>>> lis = [a, 2]
>>> lis
['y', 2]