Python日常(6):列表的创建、增加(追加、局部添加)、修改、删除

人生苦短,我学python!

目录

前言:

1.列表的创建

2.列表的增加

1)追加

2)局部添加

3.列表的修改

4.列表的删除

1)整体删除2)局部删除

作者的话


前言:

列表可谓是python中使用最广泛、功能最强大的数据类型,今天我们就来了解一下列表的创建、增加、修改和删除,无论你是python小白,还是有一定基础的想要更进一步,我相信在这篇文章中一定有你想要的东西。接下来让我们进入正题。


1.列表的创建

(1)list()函数方法

(2)[]快捷方式创建

这些都比较简单就不过多叙述。


2.列表的增加

1)追加

(1)加法和形式

(2).append()方法

问题:

.append()方法参数任意,也就是说可以添加任意类型的数据到列表中,且对于可迭代类型数据也可通过切片形式获取。如下图:

(3).extend()方法

问题:

看到这里大家应该已经明白了,.extend()方法的参数只能是可迭代类型,且会把可迭代对象拆分后加入到列表中,这是.extend()方法与.append()方法的最根本的不同之处,那你会说如果加入不可迭代类型呢?会出现什么情况呢?

可以看到当我们试图通过.extend()添加一个整数的时候会出现TypeError的情况,这也是最基础的语法错误情况。

另外需要注意的是对于单个字符python解释器也认为是可迭代类型,这个应该还是比较好理解的,相当于迭代一次。对于字典类型我们应该知道,它属于一种映射关系,内部是不可解包的,也就是说不可迭代,而只单单研究字典的键的话,python解释器认为它为可迭代的,采用.extend()方法添加字典类型,也只会添加字典的键而不会添加其值,具体我们看实例。对于字典类型的使用我们将于下周讲述,望大家关注。

(4)切片方法

问题:

对于这种方法,并不是那么容易理解的,那到底是怎么回事呢?在这里先看两个例子。

小编的理解呢是这样的,对于python解释器来说列表类型是内部可变的,空间大小是不定的,这也是python列表的方便之处,不像c语言中的数组类型,需要固定空间大小。所以对于python解释器来说,它认为该列表大小其实就是你的内存大小,可以无限添加,自然也可访问,那为什么a[3]反而显示超出列表范围呢,这也是python解释器对内存空间的一种保护形式,原则上是不允许访问后续为赋值空间的。

该方法和.extend()方法更相像,它的赋值类型也许为可迭代类型,能不能像.append()方法一样添加一堆数据在一个位置呢?也是可以的,在这里就列举几个例子,更详细的解说大家可以参考python官方文档:5. 数据结构 — Python 3.9.5 文档

这里也有一点需要注意,demo[len(demo):]的切片形式,只要起始值(也就是len(demo))大于或等于列表长度便可以使用,为了方便起见且你并不一定知道列表长度的情况下采用[len(demo):]形式是最方便的,上述也有例子大家可自行查看。

2)局部添加

(1).insert()方法

(2)切片添加

如果认真思考与开发的话,你会发现实现同一件事情的方式有成千上万中,难道我们都要记住熟练使用吗?完全不需要,对于个人来讲如果是非教学性质,只是单纯的想完成任务或项目,只需熟练掌握一两种方法即可,面对一个问题知道怎么解决,用什么方法解决最高效、最简洁就足够了,所以呢在这里就不在深度挖掘了,大家感兴趣的话可以再想一想还有那些可用的方法呢?欢迎大家留言告诉我。在这里呢也建议大家对于列表局部元素的添加.insert()方法的时间复杂度为O(n),并不十分高效,不过却是最常用的一种方式,想要了解更高效的添加方式的话,建议大家可以翻看python高级编程类型的书籍,这里就不再介绍了。


3.列表的修改

(1)切片法

问题:

显然这种方法存在着局限性,也就是你要明确知道你所要修改元素所在列表中的位置,那如果不知道元素所在位置,只知道元素值怎么办呢?请看第二种方法。

(2).index()方法与切片的结合

问题:

当然大家也可以看出这里的索引为全索引,也就是说你需要完整的知道元素是什么,不能差一丝一毫,如果只知道元素部分形式该怎么办呢?这就需要用到正则表达式的模式匹配了,由于该函数库内容较多且复杂,一时半会是没办法说明白的,大家感兴趣的话可以自行查阅资料。

也许部分读者也会有这样的疑问,那如果想修改的元素在列表中重复了好几次,你这种方式到底修改的谁呢?如果知道大致元素所在列表的位置,能不能指定修改呢?答案是完全可以的,请看下面实例。

也就是说默认为第一个所查找到的位置,且只修改一次。

给定大致始末位置便可在自己想要更改的区域进行修改。


4.列表的删除

1)整体删除

(1)del方法

(2).clear()方法

问题:

这里需要注意.clear()方法与del方法的区别,.clear()方法只是删除了列表变量的内容,并未删除变量,通过上图可以看出我们仍然可以调用demo变量,只不过是一个空列表。而del方法是删除变量,可以看到,当我们执行del demo之后,再调用demo变量出现了NameError的异常,也就是未定义的意思。

2)局部删除

(1)del方法

(2).pop()方法

问题:

.pop()方法会有一个返回值,也可用于一次性数据的遍历问题,如在Douglas-Peuker算法中,通常采用while循环方式实现,那如何采用for循环实现呢?这是便可采用.pop()方法实现列表的动态变化。下面为一个简单的实例,具体含义是,如果列表中含有2就把列表第4个元素之后的元素全部删除并输出列表元素值。这里虽然未用到.pop()方法,但含义是一样的,我们主要想要说明的是对于可迭代对象遍历时,对象本身是可变的,完全可以对其进行修改。

(3).remove()方法

问题:

需要注意其与.pop()方法的区别所在,.pop()方法的参数为下标,而.remove()方法的参数为元素值,这两个函数可以说成是刚好配套的。


作者的话

这里只是简单的介绍了一下列表的创建、增加、修改、删除方法,对于其他的例如:反转、排序等并未介绍,但这并不代表不讲解,而是会在后续内容中讲解,后续会专门写一篇文章用来讲述列表常见函数的使用方法。人生苦短,我学python。关注我,带你用python玩转世界。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chandni.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值