文章目录
1. 获取指定的元素 a) 切片操作 b)查询操作 c) 列表元素遍历 a) 获取类表中的指定元素的索引 b) 获取列表中的单个元素 2. 列表查询操作 3. 列表元素的增加操作 4. 列表元素的删除 5. 列表元素的修改 6. 列表的排序操作 7. 列表生成式 1.为什么要使用列表? 2. 列表的内存示意图讲解 3. 列表对象的创建 一. 列表的概念 二.列表的使用 总结
一. 列表的概念
1.为什么要使用列表?
我们都知道变量可以存储一个元素,而列表是一个大容器,可以存储N个元素,程序可以方便的对这些元素进行操作。
列表相当于其他语言中的数组,如果你没有了解过其他语言,这句话可以略过。
在Python中一切皆为对象,所以变量存储的就是一个对象的引用。
2. 列表的内存示意图讲解
列表示意图:
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38a=20 lst=['hello','world',2021]print(id(lst))print(type(lst))print(lst)
示意图: 假如一个列表是lst=[hello,world,100,20] 4个元素
3. 列表对象的创建
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38#c创建列表的第一种方式lst=['hello','world']#创建列表的第二种方式,使用内置函数list()lis2=list(['hello','world'])
列表的特点:
列表元素按照有序排序 索引映射唯一一个数据 列表可以重复存储数据 任意数据类型混存 根据需要动态分配和回收内存二.列表的使用
1. 获取指定的元素
a) 获取类表中的指定元素的索引根据索引获取指定的元素
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=['hello','world',38,'itlaoxin']print(lst.index('hello'))print(lst.index(38,1,4))
在索引为1-4里查找元素38,结果为2
b) 获取列表中的单个元素# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=['hello','world',38,'itlaoxin','hello','world',234]print(lst[2]) #38print(lst[-3])#helloprint(lst[0]) #hello#print(lst[10]) #超出范围报错print(lst[-1]) #2342. 列表查询操作 a) 切片操作
步长为正数的时候:
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,5,6,7,8,9,]print(lst[1:6:1]) #[2, 3, 4, 5, 6]
lst[1:6:1] 表示: 从索引1开始到索引6结束,步长为1,一般默认步长为1
其他写法:
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,5,6,7,8,9,]print(lst[1:6:1]) #[2, 3, 4, 5, 6]print(lst[1:6])print(lst[1:6:])print(lst[1:6:2])print(lst[:6:2])
结果:
步长为负数的情况
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,5,6,7,8,9,]print(lst[::-1])
这种情况相当于取反
这种写法也可以:
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,5,6,7,8,9,]print(lst[8::-1]) #[9, 8, 7, 6, 5, 4, 3, 2, 1]b)查询操作
判断指定元素是否在列表中存在
元素in 列表名 元素 not in 列表名 c) 列表元素遍历for 可迭代变量 in 列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,5,6,7,8,9,]for item in lst: print(item)3. 列表元素的增加操作
列表元素的增加操作: append() 在列表末尾加一个元素 extend() 在列表末尾添加一个元素 insert() 在列表的任意位置添加一个元素 切片: 在列表的任意位置添加一个元素
append()
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]print("添加元素之前",lst,id(lst))lst.append(100)print('添加元素之后',lst,id(lst))
可以看到,ID是相同的,也就是没有生成新的列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]print("添加元素之前",lst,id(lst))lst.append(100)print('添加元素之后',lst,id(lst))lst2=['hello','world']lst.append(lst2)print(lst)
输出:
可以看到这里,将lst2作为一个元素添加到末尾 extend() 这个是扩展
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]lst2=['hello','world']print(lst)lst.extend(lst2)print(lst)
insert() 是在任意位置上添加
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]lst.insert(2,90)print(lst)
切片也可以在任意位置添加元素
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]lst3=['hello','world','itlaoxin']lst[1:]=lst3 print(lst)
可以看到,它把索引1后面的都切掉了,然后把lst3添加到lst里了
切片实际上就是切掉一部分,用新的替换。
4. 列表元素的删除remove() 一次删除一个元素,重复元素只删除第一个,元素不存在抛出valueerror
pop() 删除一个指定索引位置上的元素 指定锁定不抛出indexError 不指定索引,删除列表中的最后一个元素
切片: 一次至少删除一个元素(切片会产生一个新的列表对象)
clear() 清空列表
del() 删除列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]lst.pop(2)print(lst) #[1, 2, 4]
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]#pop() 不指定索引删除最后一个lst.pop()print(lst)#[1, 2, 3]
清空列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]#clear() 清空列表lst.clear()print(lst)
删除列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]del lst print(lst)
删除后就没有了,打印会提示没有定义
5. 列表元素的修改
列表元素的修改:
为指定索引元素赋新值 为指定的切片赋予一个新值# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]#一次修改一个值lst[2]=100 print(lst)#[1, 2, 100, 4]
使用切片来替换
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]lst[1:3]=[30,40,50,60]print(lst)
这个就是把2和3去掉,然后用30,40,50,60 代替 6. 列表的排序操作
两种方法:
调用sort()方法,列表中所有的元素默认按照从小到大的顺序来排序,可以指定reverse=True 进行降序排序 调用内置函数 sorted() ,可以指定reverse=True进行降序排序,原列表不发生改变。此方法会产生一个新的列表对象# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,88,77,5,46]print('排序前的列表',lst)lst.sort()print('排序后的列表',lst)lst.sort(reverse=True)print('降序排序',lst)
使用sorted() 会产生一个新列表
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4,88,77,5,46]print('排序前的列表',lst)newlst=sorted(lst)print(lst)print(newlst)
两个区别就是: sort()是对原列表进行操作,sorted()是生成新列表
7. 列表生成式列表生成式,就是列表生成的公式
语法: ii for i in range(1,10)
ii 表示列表元素的表达式
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[ i for i in range(1,10)]print(lst)
注意: 要想使用列表生成式,需要你生成的列表有一定的规则
比如列表中的元素的值为2,4,6,8,10
# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[ i*2 for i in range(1,6)]print(lst)
这种方式了解下就可以了。
总结
列表还是很重要的,在Python以后的学习中经常会用到。
查看更多关于【Python从零到壹】Python列表详解的详细内容...