Python列表常用操作

时间:2021-6-12 作者:qvyue

回顾复习

  • Python列表是可变数据类型之一(列表、字典及集合)

  • 列表的数据项不需要具有相同的数据类型。比如[10,”aaa”,True,[20,30],(5,7),{1,2,3}]

  • 列表可以进行操作包括添加、删除等操作

例如创建一个列表对象,数据项里包含有整型、字符串、元组、字典类型。

List = [10,"aaa",True,[20,30],(5,7),{1,2,3}]

Python列表常用操作
截屏2021-06-06 18.16.10.png

DOCS

Python列表常用操作
截屏2021-06-06 17.34.19.png

1.列表创建

列表的创建方式有4种。

  • 方括号

  • list()可以将任何迭代的数据转化成列表

  • range()/map()创建整数列表

  • 推导式来创建列表

接下来,我们来分别介绍一下4种方法创建列表。

1.1 使用[]创建

我们可以使用列表的基本语法,[] 来创建。把逗号分隔的不同的数据项使用方括号括起来

# 定义一个列表变量

a = [10,20,39]

# 打印列表a
print(a)

1.2 使用list()创建

list()函数是python内置函数。

它可以将任何可迭代数据转换为列表类型,并返回转换后的列表。

当参数为空时,list函数可以创建一个空列表

  • 创建空列表
>>> a = list()
>>> a
[]

  • 将字符串转换为列表
>>> a = list("JUEJING")
>>> a
['J', 'U', 'E', 'J', 'I', 'N', 'G']
>>> 
  • 将元组转换为列表
>>> Tule = (10,20,30)
>>> a = list(Tule)
>>> a
[10, 20, 30]
>>> 
  • 将字典转换为列表
>>> Dict = {"Name":"JUEJING"}
>>> a = list(Dict)
>>> a
['Name']

注意:将字典转换为列表时,会将字典的值舍去,而仅仅将字典的键转换为列表。

如果想将字典的值全部转换为列表,可以考虑使用字典方法dict.values()。

  • 将集合转换为列表
>>> Set = {1,2,"JUEJING"}
>>> a = list(Set)
>>> a
[1, 2, 'JUEJING']

1.3 使用range()/map()生成列表

range()语法格式为:

range([start],end,[step])

start参数:可选,表示起始数字,默认是0

end参数:必选,表示结尾数字。

step参数:可选,表示步长,默认为1

python3中range()返回的是一个range()对象,而不是列表。我们需要通过list()方法将其转化成列表对象。

>>> list(range(3,10,2))
[3, 5, 7, 9]
>>> list(range(15,3,-1))
[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4]
>>> list(range(3,-10,-1))
[3, 2, 1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> 

map() 语法格式:

map(function,iterable)

function参数:函数

iterable参数:– 一个或多个序列

map()会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

>>> list(map(int,[1,2,3,4]))
[1, 2, 3, 4]
>>> 

注意:

  1. 参数必须是可迭代序列对象。list函数的参数必须是可迭代对象。当选用不可迭代的对象作为参数时,Python报错
>>> list(10)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not iterable
>>> 
  1. 无意义的转换——将列表转换为列表。
1.4 使用推导式来生成列表

我们可以使用控制语句for循环,if语句来生成列表。

>>> a = [x*2 for x in range(5)] #循环创建多个元素
>>> a
[0, 2, 4, 6, 8]
>>>
>>> a = [x*2 for x in range(100) if x%9==0] # 通过if语句来进行过滤
>>> a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]
>>> 

2. 列表添加元素

列表添加元素有5种方式

Python列表常用操作
截屏2021-06-06 20.50.39.png

当列表元素增加事,列表会自动进行内存管理,大大减少程序猿的负担,但这个特点涉及列表元素大量移动,效率低。除非必要情况下,我们一般只在列表的尾部添加元素,这样会大大提高列表的操作效率。

2.1 使用append()函数

原地修改列表对象,是真正的列表尾巴添加新元素,速度最快,强烈推荐。

>>> a = [1,2]
>>> a.append(10)
>>> a
[1, 2, 10]
>>> 

2.2 使用insert()函数

使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度,涉及大量元素时,尽量避免使用。

>>> a = [1,2]
>>> a.insert(1,7)
>>> a
[1, 7, 2]
>>> 

2.3 使用extend()函数

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

>>> a = [1,2]
>>> a.extend([6])
>>> 

Python列表常用操作
截屏2021-06-06 21.09.54.png
2.4 使用➕连接

使用加号进行连接,并不是真正的尾部添加元素,而是创建新的列表对象,将原列表的元素和新列表元素依次复制到新的列表对象中,这样会涉及大量的复制操作,对于操作大量元素不建议使用

>>> a = [1,2]
>>> a+[5]
[1, 2, 5]
>>> id(a)
4479245520
>>> id(a+[5])
4479245680
Python列表常用操作
截屏2021-06-06 21.20.39.png
2.5 使用乘号扩展

使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复

>>> a = [1,2]
>>> b = a*3
>>> id(a[0])
4476513184
>>> id(b[0])
4476513184
>>> id(b[2])
4476513184
>>> 

Python列表常用操作
截屏2021-06-06 21.37.01.png

3. 删除列表元素

Python列表常用操作
截屏2021-06-06 21.41.02.png
3.1 使用pop()函数

pop()删除并返回指定位置元素,如果没有指定,则默认删除列表尾部的元素

a.pop([index=-1])

参数:

obj — 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。

>>> a = [1,2,6]
>>> a.pop()
6
>>> 
3.2 使用remove()函数

remove() 函数用于移除列表中某个值的第一个匹配项。

a.remove(obj)

参数:

obj — 列表中要移除的对象。

>>> a = [1,2,6]
>>> a.remove(2)
>>> a
[1, 6]
>>> 
3.3 使用del()函数

删除列表指定元素。

>>> a = [1,2,6]
>>> del a[1]
>>> a
[1]
>>> 

注解: 删除索引2的位置之后,索引3位置会前移到索引2位置

Python列表常用操作
截屏2021-06-06 21.53.56.png

4.列表切片

切片是python序列及其重要操作,适用于列表、元组、字符串等等。

切片slice操作可以让我们快速提取子列表或修改。标准格式为:

[start:end:step]

注:当步长省略时顺便可以省略第二个冒号。

>>> a = [1,2,6]
>>> a[1:]
[2, 6]
>>> a[::-1]
[6, 2, 1]
>>> a = [1,2,6]
>>> a[:]
[1, 2, 6]
>>> a[1:]
[2, 6]
>>> a[:2]
[1, 2]
>>> a[1:2]
[2]
>>> a[0:2:1]
[1, 2]
>>> 

其他操作(三个数为负数)的情况:

>>> a[::-1]
[6, 2, 1]
>>> a[-1::]
[6]
>>> a[-3:-2]
[1]

好啦,以上是本期内容,下期介绍列表的姊妹元组。

欢迎大佬在评论区,指正,我是学习python的盆友圈的小可爱,下次再见!

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。