python的列表是一种有序且可变的序列,列表使用中括号[]进行定义,各项元素之间使用逗号分隔。python的列表与其他编程语言中的数组很像,但独特之处在于python并不要求列表中的元素必须都是同一个类型,而是可以存储任意类型的数据。
列表和字符串都是序列,同样支持索引方式访问,也支持切片操作,不同于字符串的是你可以修改列表的内容。
在定义列表时,不需要指定列表的长度,也不用担心持续向列表中写入新的数据会达到存储容量限制,python列表是动态扩容的。
创建python列表有两种方式:
使用[]创建一个空列表
empty_list = [] # 创建一个空列表
空列表的长度是0,此后你可以使用append方法向列表添加元组。
使用[]创建一个有多个元素的列表
lst = [1, '2', True, [1, 2]]
列表对存储在其中的元素类型没有要求,因此,你可以将任意类的元素存储在列表中,甚至包括列表本身,后面将要学习的元组,字典,集合,同样可以存在列表中。
使用内置函数list创建列表
lst1 = list("python")
lst2 = list([1, 2, 3])
print(lst1) # ['p', 'y', 't', 'h', 'o', 'n']
print(lst2) # [1, 2, 3]
能够作为list参数的不只是字符串和列表,任何可迭代对象都可以作为list函数的参数,list会返回一个新的列表
访问列表里的元素只能使用索引方式,它的一般代码形式如下
list[index]
在列表对象后面紧跟一对中括号[],中括号里的index是索引值,索引从0开始,正向索引逐个递增,列表的最大索引值是列表的长度减去1。python列表的索引支持反向索引,最后一个元素的索引值是-1,反向递减。以下面的列表为例
lst = [2, 3, 5, 6]
下面这张图可以很好的阐述索引的概念
假设你现在想要使用print语句输出列表的最后一个元素的值,你有两种方法
print(lst[3]) # 6
print(lst[-1]) # 6
一般情况下使用正向索引就足够了,但某些情况下需要操作列表倒数某个元素时,使用反向索引更容易。
向一个列表新增数据,有三个常用的方法,他们有各自的应用场景,这三个方法分别是
append方法在列表的末尾新增数据
lst = [1, 2, 3]
lst.append(4)
print(lst) # [1, 2, 3, 4]
新增的数据一定会成为列表的最后一个元素,如果你想在列表中间的某个位置上插入一个新的元素,需要使用insert方法。
insert方法在指定的索引位置的前面向列表中插入一个新的元素,指定的插入索引位置是多少,新元素的索引就是多少。
lst = [1, 2, 3]
lst.insert(0, 4)
print(lst) # [4, 1, 2, 3]
在这个例子中,我使用insert方法在索引0的前面插入新元素4,插入后,4的索引就是0。由于insert只能在指定索引的前面插入,因此你无法使用insert方法在列表的末尾插入新的元素,列表的最大索引是2,如果insert指定插入索引位置为2,那么新插入元素的索引就会是2,而原本在索引2的位置上的元素将被移动到索引3的位置上。
append和inset一次只能新增一个元素,extend方法可以一次性将另一个序列里的元素追加到列表的末尾
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst1.extend(lst2)
print(lst1) # [1, 2, 3, 4, 5, 6]
修改列表里的某一项元素,需要通过索引方式找到元素然后重新对其赋值。
lst = [1, 2, 3]
lst[0] = 100
print(lst) # [100, 2, 3]
列表的第一个元素原本是1,现在被修改为100。
删除列表中的数据,有4种方法,分别是
使用remove方法删除列表里的元素需要在方法里指明要删除的元素的值。
lst = [1, 2, 3, 2]
lst.remove(2) # 明确指明要删除2
print(lst) # [1, 3, 2]
虽然指明要删除2,但是remove方法不会将列表里所有的值为2的元素删除,它只会删除能够找到的第一个符合删除条件的值,剩余的值即便符合删除条件也不会被删除。
同时需要注意的是,如果指定要删除的元素不存在,会引发ValueError异常,因此在使用remove方法之前,务必先使用成员运算符in 或者是其他方法先确定被删除的元素是否真的在列表中。
使用pop方法删除列表里的元素时需要在方法里指明要删除的元素的索引
lst = [1, 2, 3, 2]
lst.pop(2) # 指明要删除索引为2的元素
print(lst) # [1, 2, 2]
这段代码里,pop方法明确要求删除索引为2的值,列表里,lst[2] 的值是3,因此3被删除。
使用del关键字也可以删除指定索引位置的元素
lst = [1, 2, 3, 2]
del lst[2]
print(lst) # [1, 2, 2]
clear方法清空列表,删除所有元素
lst = [1, 2, 3, 2]
lst.clear()
print(lst) # []
clear方法情况列表后,lst变为一个空列表。
遍历列表的常用方法是使用for循环,它的模式非常固定
lst = [1, 2, 3, 2]
for item in lst:
print(item)
程序输出结果
1
2
3
2
使用内置函数len获取列表的长度
lst = [1, 2, 3, 2]
print(len(lst)) # 4
知晓列表的长度,就能够计算出列表的索引范围,列表的最小索引是0,最大索引是起长度值减1,这在通过索引方式遍历列表时是非常有用的
lst = [1, 2, 3, 2]
for i in range(len(lst)):
print(lst[i])
这段代码如果现在不能理解,没有关系,等学习到for循环后再回看这段代码就一目了然了。
使用算数运算符+合并两个列表
python的序列,例如字符串,列表,元组,都支持算数运算符+
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst3 = lst1 + lst2
print(lst3) # [1, 2, 3, 4, 5, 6]
列表lst1 与 lst2 相加得到一个新的列表lst3。
使用算数运算符*让列表里的元素个数翻倍
lst1 = [1, 2, 3]
lst2 = lst1*3
print(lst2) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
lst1*3,会生成一个新的列表,新列表的长度是lst1的3倍。
使用成员运算符in判断某个元素是否在列表中
lst1 = [1, 2, 3]
print(2 in lst1) # True
print(3 not in lst1) # False
in 可用于判断一个元素是否在列表中,如果前面加一个not,就表示判断一个元素是否不在列表中。
方法 | 功能 |
---|---|
count() | 统计某个元素在列表中出现的次数 |
append() | 在列表末尾添加新的对象 |
extend | 在列表末尾一次性追加另一个序列中的多个值 |
index | 返回一个元素在列表中第一次出现的位置索引 |
insert() | 将对象插入列表中的指定位置 |
pop() | 删除列表中指定索引的元素,默认删除最后一个并返回该值 |
remove() | 移除列表中某个值的第一个匹配项 |
reverse() | 翻转列表 |
sort() | 对列表进行排序 |
QQ交流群: 211426309