【Python从零到壹】Python列表详解

文章目录

    • 1. 获取指定的元素
    • a) 切片操作
    • b)查询操作
    • c) 列表元素遍历
    • a) 获取类表中的指定元素的索引
    • b) 获取列表中的单个元素
    • 2. 列表查询操作
    • 3. 列表元素的增加操作
    • 4. 列表元素的删除
    • 5. 列表元素的修改
    • 6. 列表的排序操作
    • 7. 列表生成式
    • 1.为什么要使用列表?
    • 2. 列表的内存示意图讲解
    • 3. 列表对象的创建
    • 一. 列表的概念
    • 二.列表的使用
    • 总结


一. 列表的概念

1.为什么要使用列表?

我们都知道变量可以存储一个元素,而列表是一个大容器,可以存储N个元素,程序可以方便的对这些元素进行操作。

列表相当于其他语言中的数组,如果你没有了解过其他语言,这句话可以略过。

在Python中一切皆为对象,所以变量存储的就是一个对象的引用。

2. 列表的内存示意图讲解

列表示意图:
【Python从零到壹】Python列表详解

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38a=20
lst=['hello','world',2021]print(id(lst))print(type(lst))print(lst)

【Python从零到壹】Python列表详解

示意图:
假如一个列表是lst=[hello,world,100,20] 4个元素
【Python从零到壹】Python列表详解

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]) #234

2. 列表查询操作

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])

结果:
【Python从零到壹】Python列表详解
步长为负数的情况

# 作者:互联网老辛# 开发时间: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))

【Python从零到壹】Python列表详解
可以看到,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)

输出:
【Python从零到壹】Python列表详解
可以看到这里,将lst2作为一个元素添加到末尾
extend()
这个是扩展

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]lst2=['hello','world']print(lst)lst.extend(lst2)print(lst)

【Python从零到壹】Python列表详解
insert() 是在任意位置上添加

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3]lst.insert(2,90)print(lst)

【Python从零到壹】Python列表详解

切片也可以在任意位置添加元素

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[1,2,3,4]lst3=['hello','world','itlaoxin']lst[1:]=lst3
print(lst)

【Python从零到壹】Python列表详解
可以看到,它把索引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)

删除后就没有了,打印会提示没有定义

【Python从零到壹】Python列表详解

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)

【Python从零到壹】Python列表详解
这个就是把2和3去掉,然后用30,40,50,60 代替

6. 列表的排序操作

两种方法:

  1. 调用sort()方法,列表中所有的元素默认按照从小到大的顺序来排序,可以指定reverse=True 进行降序排序
  2. 调用内置函数 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)

【Python从零到壹】Python列表详解
使用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)
【Python从零到壹】Python列表详解
ii 表示列表元素的表达式

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[ i for i in range(1,10)]print(lst)

【Python从零到壹】Python列表详解

注意: 要想使用列表生成式,需要你生成的列表有一定的规则

比如列表中的元素的值为2,4,6,8,10

# 作者:互联网老辛# 开发时间:2021/4/3/0003 18:38lst=[ i*2 for i in range(1,6)]print(lst)

这种方式了解下就可以了。

总结

列表还是很重要的,在Python以后的学习中经常会用到。

上一篇:Docker+Flask初学快速上手


下一篇:9-3 线程,线程池,守护线程,锁,协程