列表
用于存储任意数目、任意类型的数据集合 。
列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:
a = [10,20,30,40] 其中,10,20,30,40 这些称为:列表 a 的元素。
列表中的元素可以各不相同,可以是任意类型。比如: a = [10,20,'abc',True]
列表的创建
1.[]创建
a = [1,50,'大象','string']
a = [] #创建一个空的列表对象
2.list()创建
a = list() #创建一个空的列表对象
a = list(range(10)). -->[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a = list("daxiang,sxt") -->['d', 'a', 'x', 'i', 'a', 'n', 'g', ',', 's','x', 't']
range()创建整数列表
range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为: range([start,] end [,step])
start 参数:可选,表示起始数字。默认是 0
end 参数:必选,表示结尾数字。
step 参数:可选,表示步长,默认为 1
python3 中 range()返回的是一个 range 对象,而不是列表。我们需要通过 list()方法将其
转换成列表对象。
列表的增加操作
1.append()方法:
原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。
a=[11,22,33]
a.append(44)
print(a) -->[11,22,33,44]
2.extend()方法 :
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
a = [11,22,33]
b = [44,55,66]
a.extend(b) -->[11,22,33,44,55,66]
3.insert()方法:
使用 insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后 面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。
a = [10,20,30]
a.insert(2,100) -->[10,20,100,30]
4.乘法扩展
b = ['da',100]*3 -->['da',100,'da',100,'da',100]
列表的删除操作
1.del 删除
删除列表指定位置的元素。
1 a = [100,200,300,333,444] 2 print(a.pop()) 3 print(a) 4 print(a.pop(1)) 5 print(a)
运行结果:
444
[100, 200, 300, 333]
200
[100, 300, 333]
3.remove()方法
删除首次出现的指定元素,若不存在该元素抛出异常
1 a = [100,200,300,333,200,444] 2 a.remove(200) 3 print(a) 4 a.remove(900) 5 print(a)
运行结果:
Traceback (most recent call last):
File "/Users/gray/PycharmProjects/test/test001.py", line 29, in <module>
a.remove(900)
ValueError: list.remove(x): x not in list
[100, 300, 333, 200, 444]
列表的修改
a = [1,2,3,4,5]
a[0] = 9 -->a = [9,2,3,4,5]
列表的查询
1.通过索引直接访问元素
我们可以通过索引直接访问元素。索引的区间在[0, 列表长度-1]这个范围。超过这个范围则 会抛出异常。
1 a = [100,200,300,333,200,444] 2 print(a[3])
运行结果:
333
2.index()获得指定元素在列表中首次出现的索引
index()可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]])。其中, start 和 end 指定了搜索的范围。
1 a = [100,200,300,333,200,444] 2 print(a.index(200)) 3 print(a.index(200,2)) #从索引位置2开始往后搜索的第一个200 4 print(a.index(200,2,5)) #从索引位置 2 到 5 这个区间,第一次出现 200 元素的位置
运行结果:
1
4
4
3.count()获得指定元素在列表中出现的次数
1 a = [100,200,300,333,200,444] 2 print(a.count(200))
运行结果:2
4.len()返回列表长度
1 a = [100,200,300,333,200,444] 2 print(len(a))
运行结果:6
5.切片操作
我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似。 切片是 Python 序列及其重要的操作,适用于列表、元组、字符串等等。切片的格式如下:
切片 slice 操作可以让我们快速提取子列表或修改。标准格式为: [起始偏移量 start:终止偏移量 end[:步长 step]]
操作和说明 |
示例 |
结果 |
[:] 提取整个列表 |
[10,20,30][:] |
[10,20,30] |
[start:]从 start 索引开始到 结尾 |
[10,20,30][1:] |
[20,30] |
[:end]从头开始知道 end-1 |
[10,20,30][:2] |
[10,20] |
[start:end]从 start 到 end-1 |
[10,20,30,40][1:3] |
[20,30] |
[start:end:step] 从 start 提 取到 end-1,步长是 step |
[10,20,30,40,50,60,70][1:6: 2] |
[20, 40, 60] |
6.列表的遍历
for obj in listObj: print(obj)
a = [100,200,300,333,200,444] for b in a: print(b) 运行结果: 100 200 300 333 200 444
7.列表的排序
sort() 默认是升序,加入reverse=True为降序
1 a=[1,2,3,11,21,10,5] 2 a.sort() 3 print(a) 4 a.sort(reverse=True) 5 print(a)
运行结果:
[1, 2, 3, 5, 10, 11, 21]
[21, 11, 10, 5, 3, 2, 1]