5.列表
列表相当于其他语言的数组
列表的特点:
1.列表元素按顺序有序排序
2.索引映射唯一数据
3.列表可以存储重复数据
4.任意数据类型混存
5.根据需要动态分配和回收内存
a=10 #变量存储的是一个对象的引用
list=['hello','world',98]
print(id(list))
print(type(list))
print(list)
------>
2276298158528
<class 'list'>
['hello', 'world', 98]
5.1列表的创建
'''创建列表的方式一,使用[]'''
lst=['hello','world',98]
'''建列表的方式二,使用内置函数list()'''
lst2=list(['hello','world',98])
5.2列表的查询操作
获取列表中指定元素的索引
index():
如查询列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
如果查询的元素在列表中不存在,则会抛出ValueError
可以在start和stop之间查找
获取列表中的单个元素
正向索引从0到N-1,举例 lst[0]
逆向索引从-N到-1 举例 lst[-N]
指定索引不存,抛出indexError
lst=['hello','world',45,'hello']
print(lst.index('hello')) #列表中存在N个相同元素,只返回相同元素中的**第一个元素**的索引
输出------->
0
list=['red','green','blue','yellow']
#正向索引
print(list[0])
print(list[1])
print(list[2])
#反向索引
print(list[-3])
print(list[-2])
print(list[-1])
==================>
red
green
blue
green
blue
yellow
列表脚本操作符
列表对+和的操作符与字符串相似,+号用于组合列表,*号用于重复列表
python表达式 | 结果 | 描述 |
---|---|---|
len([1,2,3]) | 3 | 长度 |
[1,2,3]+[4,5,6] | [1,2,3,4,5,6] | 组合 |
['good!']*4 | ['good!','good!','good!','good!'] | 重复 |
3 in[1,2,3] | True | 元素是否存在列表中 |
for x in [1,2,3]:print(x,end="") | 1 2 3 | 迭代 |
列表的的截取和拼接、嵌套
#截取操作
print('-----截取操作------')
L=['Good','Morning','Lini']
print(L[2])
print(L[-2])
print(L[1:])
#拼接操作
print('-----拼接操作------')
num = [1,3,5,6,7,8]
num += [2,4,9]
print(num)
#嵌套操作
print('-----嵌套操作------')
a = ['a','b','c']
n = [1,3,5]
x = [a,n]
print(x)
print(x[0])
print(x[0][1])
===================================》
-----截取操作------
Lini
Morning
['Morning', 'Lini']
-----拼接操作------
[1, 3, 5, 6, 7, 8, 2, 4, 9]
-----嵌套操作------
[['a', 'b', 'c'], [1, 3, 5]]
['a', 'b', 'c']
b
判断元素在列表是否存在
元素 in 列表名
元素 not in 列表名
5.2列表元素的遍历
迭代器:是访问集合元素的一种方式。迭代器对象可以从集合的第一个元素开始访问,直到所有元素 被访问结束。
迭代器两种方法:iter()和next()
for 迭代变量 in列表名:
操作
eg1:
lst=[10,20,'python','hello']
print('p' in 'python')
print(10 in lst)
print(100 not in lst)
print('---迭代--')
for item in lst:
print(item)
===========>
True
True
True
---迭代--
10
20
python
hello
eg2:
print('--------iter(),next()-------')
list=[1,2,3,5]
it = iter(list)
print(next(it))
print(next(it))
print('---for遍历--')
list1=[2,4,6,8]
it = iter(list1)
for a in it:
print(a, end=" ")
==================================>
--------iter(),next()-------
1
2
---for遍历--
2 4 6 8
5.3列表的增加操作
增加操作:
append():在列表末尾添加一个元素
extend():在列表末尾至少添加一个元素
insert():在列表的任意位置添加一个元素
切片:在列表的任意位置添加至少一个元素
eg1:
#向列表末尾添加一个元素
lst1=[10,23,45]
print('添加元素之前',lst1,id(lst1))
lst1.append(100)
print('添加元素之后',lst1,id(lst1))
#在末尾位置一次性添加多个元素
lst2=['hello','world']
lst1.extend(lst2)
print(lst1)
#在列表任意位置上添加一个元素
lst1.insert(55,99)
print(lst1)
#在任意位置添加多个元素
lst3=[True,False,'hello']
lst1[1:]=lst3 #:没有指定位置直到末尾
print(lst1)
================================================》
添加元素之前 [10, 23, 45] 1586504758272
添加元素之后 [10, 23, 45, 100] 1586504758272
[10, 23, 45, 100, 'hello', 'world']
[10, 23, 45, 100, 'hello', 'world', 99]
[10, True, False, 'hello']
5.4列表的删除操作
**remove():**一次删除一个元素,重复元素删除第一个,元素不存在抛出ValueError
pop():删除一个指定索引位置上的元素,指定索引不存在提示IndexError,不指定索引,删除列表中最后一个元素
切片:一次至少删除一个元素
clear():清空列表
del:删除列表
lst=[10,20,30,40,50,60,40]
lst.remove(30) #从列表移除元素30
print(lst)
#pop()根据索引移除元素
lst.pop(1) #删除了元素20
print(lst)
lst.pop() #不指定参数(索引),将删除列表中的最后一个元素
print(lst)
print('---切片操作-删除至少一个元素,将产生一个新的列表对象-----')
new_list=lst[1:3]
print('原列表',lst)
print('切片后的列表',new_list)
'''不产生新的列表对象,而是删除原列表中的内容'''
lst[1:3]=[]
print(lst)
'''清除列表中的所有元素'''
lst.clear()
print(lst)
'''del 语句将列表对象'''
del lst
========================================》
[10, 20, 40, 50, 60, 40]
[10, 40, 50, 60, 40]
[10, 40, 50, 60]
---切片操作-删除至少一个元素,将产生一个新的列表对象-----
原列表 [10, 40, 50, 60]
切片后的列表 [40, 50]
[10, 60]
[]
5.5列表的修改操作
为指定索引的元素赋予一个新值
为指定的切片赋予一个新值
eg1:把索引为2 的地方改为99
lst=[10,20,30,40]
#一次修改一个值
lst[2]=99
print(lst)
lst[1:3]=[300,400,500,600]
print(lst)
================》
[10, 20, 99, 40]
[10, 300, 400, 500, 600, 40]
5.6列表的排序操作
常见方式:
1.调用sort()方法,列表中所有元素按从小到大顺序排序,可以指定reverse=True,进行降序排序。
2.调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变。
eg1:排序操作
lst=[20,30,40,50,45,78,26]
print('排序前的列表',lst)
#排序,sort方法升序
lst.sort()
print('排序后的列表',lst,id(lst))
#通过指定关键字参数,将列表元素降序
lst.sort(reverse=True) #降序
print(lst)
lst.sort(reverse=False) #升序
print(lst)
#调用内置函数排序
print('-------sorted()排序,生成新列表---------')
lst1=[45,89,78,15,56]
print('原列表',lst1)
new_list=sorted(lst1) #升序
print(lst1)
print(new_list)
#指定关键字参数,将列表元素降序排序
desc_list=sorted(lst1,reverse=True) #降序
print(desc_list)
============================================》
排序前的列表 [20, 30, 40, 50, 45, 78, 26]
排序后的列表 [20, 26, 30, 40, 45, 50, 78] 3058413823296
[78, 50, 45, 40, 30, 26, 20]
[20, 26, 30, 40, 45, 50, 78]
-------sorted()排序,生成新列表---------
原列表 [45, 89, 78, 15, 56]
[45, 89, 78, 15, 56]
[15, 45, 56, 78, 89]
[89, 78, 56, 45, 15]
列表生成式:简称生成列表的公式
语法:由列表元素表达式、自定义变量、可迭代对象组成。列表元素表达式中包含自定义变量
[i*i for i in range(1,10)]
5.7总结
列表的创建:使用[],内置函数list(),列表生成式
列表的查询:查询元素索引、获取单个元素、获取多个元素、in/not in
列表增删改:
增:append()、extend()、insert()、切片