python列表 (list)
python的列表(list)是使用频率最高的一种数据结构, 很像C++中的vector 和 java 中的ArrayList, 是大小可动态变换的数组。 单个列表可以同时存储多种数据类型, 而不一定非得是同一种数据类型。
列表是有序的, 它根据确定的序列对列表里的数据进行索引, 和其他语言一样, 索引从0开始, 列表里每个数据都有自己确切的位置, 对列表里元素的任何操作都离不开索引, 因此, 对列表进行迭代是非常常见的操作。
1. 创建列表
list1 = [1, 2, 3, 4, 5 ]
list2 = [1, 2, '3', True]
list3 = [[1,2,3], True, 1]
列表里可以存放任意类型的数据,每个数据之间,用逗号分隔,整个列表被包裹在一对中括号[]里,如果你定义lst = [],[]表示一个空列表。
2. 索引的概念
列表是数据的有序集合,对于列表里数据的操作,都必须通过索引来完成,回想一下上一篇的智力测试,所有的小球按顺序排放,顺序就是小球的索引,你可以将索引就理解为顺序,只是有一点务必牢记,计算机里的索引,或者说顺序,都是从0开始的
lst = [2, 3, 5, 6]
下面这张图很好的阐述了索引的概念
所谓正序索引,就是从左向右看,倒序索引就是从右向坐看,由左至右,从0开始递增,从右向左,从-1开始递减,python既支持正序索引,也支持倒序索引。
3.向列表中新增数据
向列表中新增数据有两种方法,一个是insert,一个是append,前者需要指定插入的位置,而append则默认在列表的尾部插入数据,下面的代码演示如何使用这两个方法新增数据
lst = [3, 5, 8, 1, 2, 6, 9]
lst.insert(2, 22) # 将22插入到索引为2的位置上
lst.append(33) # 将33增加到列表尾部
print(lst)
下图很好的解释了这两种新增方法的区别
4. 访问列表里的数据
访问列表里的数据,必须提供索引,假设你想输出列表里的第0个元素,和倒数第一个元素,你应该这样操作
lst = [3, 5, 8, 1, 2, 6, 9]
print(lst[0])
print(lst[-1])
程序输出结果为
3
9
根据索引获取列表里的数据,需要使用中括号[],在[]里填写你想要获取数据的索引,如果这个索引超出了范围,就会报错
lst = [3, 5, 8, 1, 2, 6, 9]
print(lst[12])
报错内容为
Traceback (most recent call last):
File "/Users/kwsy/PycharmProjects/pythonclass/wx_monitor/main.py", line 2, in
print(lst[12])
IndexError: list index out of range
这是因为列表里根本没有这个索引,你想要找的索引已经超出了列表索引的范围。
5. 遍历列表
请注意, for循环的内容要等到第5章程序控制章节才会讲解, 如果你还没有掌握for循环, 这段内容你可以等到学完第5章循环控制以后在来学习
遍历索引,需要使用for循环,你可以写出至少3种for循环,每一个都可以遍历列表里所有的元素
方法1,通过索引遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for i in range(len(lst)):
print(lst[i])
方法2,通过迭代器遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for item in lst:
print(item)
方法3, 通过enumerate函数遍历
lst = [3, 5, 8, 1, 2, 6, 9]
for index, item in enumerate(lst):
print(index, item)
关于enumerate函数,可以在内置函数章节里学习
6. 删除列表里的元素
删除列表里的元素有两种方法,一种是根据索引来删除,一种是根据值来删除,先说根据索引删除
根据索引删除列表里的元素
列表的pop方法可以删除指定索引位置上的数据
lst = [3, 4, 1, 4, 2]
lst.pop(0) # 删除索引为0的元素
print(lst)
pop只会删除指定索引位置的元素,程序输出结果为
[4, 1, 4, 2]
除了使用pop方法,你还可以使用del 关键字
lst = [3, 4, 1, 4, 2]
del lst[0]
print(lst)
del lst[0] 等价于 lst.pop(0)
根据值删除列表里的元素
根据值删除,使用remove方法,remove会删除列表里指定的值,比如你想删除4
lst = [3, 4, 1, 4, 2]
lst.remove(4)
print(lst)
需要注意的是,remove方法一次只会删除一个值,列表里有两个4,它会删除索引最小的那个4,程序输出结果为
[3, 1, 4, 2]
7. 和列表相关的几个重要内置函数
7.1 len,计算列表长度
len函数已经不是第一次接触了,len函数不仅能求列表的长度,还能求字符串的长度,集合的长度,元组的长度,字典的长度,他们的用法如此统一,减轻了我们学习的难度
lst = [3, 4, 1, 4, 2]
print(len(lst))
7.2 max,返回数列的最大值
max不仅可以作用于列表,也可以作用于元组,它会返回数列里的最大值
lst = [3, 4, 1, 4, 2]
print(max(lst))
肉眼可见,4是列表的最大值,max函数返回值为4
7.3 min, 返回数列的最小值
min可以作用于列表,也可以作用于元组,它返回数列里的最小值
lst = [3, 4, 1, 4, 2]
print(min(lst))
1是列表的最小值,min函数返回值为1
7.4 sum,返回数列里所有数据的和
同样,sum函数可以作用于列表,也可以作用于元组,它返回数列里所有数的总和
lst = [3, 4, 1, 4, 2]
print(sum(lst))
列表里所有元素的总和是14,这正是sum函数的返回值
8. 列表操作符
操作符功能作用
+连接两个列表
*重复列表内容
in成员操作符,判断某个数据是否在列表中
not in成员操作符,判断某个数据是否在列表中
列表对 + 和 * 的操作符与字符串相似,现在,在交互式解释器里跟随我一起操作
>>> lst1 = [1, 2, 3]
>>> lst2 = [4, 5, 6]
>>> lst1 + lst2
[1, 2, 3, 4, 5, 6]
>>> lst1*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> 3 in lst1
True
>>> 4 not in lst2
False