千家信息网

python怎么删除列表中特定元素

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"python怎么删除列表中特定元素"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python怎么删除列表中特定元素"文章能帮助大家解决问题。
千家信息网最后更新 2026年10月31日python怎么删除列表中特定元素

这篇文章主要介绍"python怎么删除列表中特定元素"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python怎么删除列表中特定元素"文章能帮助大家解决问题。

题目如下:

给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。

示例:

输入: "Hello World"
输出: 5

思路

题目要求给一个字符串s,s仅包含字母和空格字符,要求返回最后一个单词的长度,考虑如下几点:

  • 1、如果s是空字符,即s="",此时应该返回0;

  • 2、如果s只包含空格字符,即s=" ",此时也应该返回0;

  • 3、如果s既包含字母也包含空格(或者只包含字母),可以通过split()函数,用一个空格字符切割,这样就可以得到一个列表,这个列表只由连续的字母和空字符组成,然后把列表中的所有空字符删除,最后把列表中的最后一项的长度返回即可;

所以现在的问题就转化为:如何删除一个列表中的特定元素,这里的话,就是删除列表中的空字符,即""

方法1

借助一个临时列表,把非空元素提取到临时列表中,然后取出临时列表最后一项,返回其长度即可

这是最笨的方法,实际运行时也是最耗时的方法:

class Solution(object):def lengthOfLastWord(self, s):""":type s: str:rtype: int"""if s.isspace(): # 判断s是否只由空格字符组成,如s==" "return 0elif s == "": # 判断s是否为空字符串,如s==""return 0else: # 如果s不为空,且不全是由空格组成temp = s.split(" ") # 通过split方法,用一个空格字符将字符串s进行切割,可以得到由单词和空字符串组成的列表,将列表赋给tempnew = [] # 定义一个空列表,作为中间变量for t in temp: # 遍历temp,把非空元素提取到new中,最后把new的最后一项的长度返回即可if t != "":new.append(t)return len(new[-1])

在说方法2之前,说一个错误的方法:使用for循环,正向遍历列表,删除其中的空字符,

如下:

s = ["","","a", "a", "a","","",""]for i in range(0,len(s)):if s[i] == "":del s[i]print(s)

运行上述代码,会报错:

原因是当遇到空字符时,把空字符删掉后,列表长度变小了,但是循环遍历时,还是按照最初的长度遍历,导致溢出;

另外这样写还存在一个弊端:可能会漏删某些空字符,原因是当删掉前面的空字符后,后面的元素依次向前移动,导致索引与原先对应的值发生变化,

如下:

b = ["","","a", "a", "a","","",""]for i in range(0,len(b)):if i >= len(b): # 加一个判断,当i大于列表长度时,跳出循环,避免报错breakif b[i] == "":del b[i]print(b)

所以我们在解决这个问题前,不能用for循环来正向遍历列表

方法2:使用while循环

因为for循环无法达到目的,所以考虑使用while循环,如下:

class Solution(object):def lengthOfLastWord(self, s):""":type s: str:rtype: int"""if s.isspace(): # 判断s是否只由空格字符组成,如s==" "return 0elif s == "": # 判断s是否为空字符串,如s==""return 0else: # 如果s不为空,且不全是由空格组成temp = s.split(" ") # 通过split方法,用一个空格字符将字符串s进行切割,可以得到由单词和空字符串组成的列表,将列表赋给tempi = 0 # 设置初始指针,定为0while i < len(temp): # 使用while循环,当指针i的值小于列表temp的长度时,则一直循环if temp[i] == "": # 从索引0开始,如果temp[i]为空del temp[i] # 则删除该索引对应的值,也就是删除temp[i]i -=1 # 删除之后,由于列表整体长度变小了1位(也就是后面的元素都往前提了一位),所以索引i需要减1,以便下次遍历时不丢掉挨着的元素i += 1 # 判断完索引i后,给索引自增1,进行下一轮判断return len(temp[-1]) # temp所有元素遍历完成后,就剔除了所有空字符串,取出最后一项的长度返回即可

方法3:for循环倒序删除空字符串

刚才说了使用for循环时,正向遍历会导致溢出或者结果出错,但是从后向前遍历是可以的

class Solution(object):def lengthOfLastWord(self, s):"""倒序循环删除空字符串:type s: str:rtype: int"""if s.isspace(): # 判断s是否只由空格字符组成,如s==" "return 0elif s == "": # 判断s是否为空字符串,如s==""return 0else: # 如果s不为空,且不全是由空格组成temp = s.split(" ") # 通过split方法,用一个空格字符将字符串s进行切割,可以得到由单词和空字符串组成的列表,将列表赋给tempfor i in range(len(temp)-1, -1, -1): # 倒序循环删除空字符串if temp[i] == "":del temp[i]return len(temp[-1])

方法4:拷贝原列表

拷贝原列表,然后遍历拷贝的列表来找出空字符,最后再原列表中删除空字符

'''学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''class Solution(object):def lengthOfLastWord_3(self, s):""":type s: str:rtype: int"""if s.isspace(): # 判断s是否只由空格字符组成,如s==" ",用isspace()函数判断return 0elif s == "": # 判断s是否为空字符串,如s==""return 0else: # 如果s不为空,且不全是由空格组成temp = s.split(" ") # 通过split方法,用一个空格字符将字符串s进行切割,可以得到由单词和空字符串组成的列表,将列表赋给tempfor i in temp[:]: # temp[:]是对原始的temp的一个拷贝,是一个新的list,所以,我们遍历新的list,而删除原始的list中的元素if i == "":temp.remove(i)return len(temp[-1])

这样理解一下:假如有一个列表s = [1,1,2,3,4,4,3,1],现在要把里面的1都删掉

我们先拷贝s,得到一个新列表(注意不能用一个变量直接等于s,如a=s,其实a和s都指向同一个列表,本质还是一个),新列表的元素与原列表完全相同

然后遍历新列表,当遇到某个元素的值为1时,就在原列表中把这个元素删掉(使用列表的remove方法删除),因为remove在删除元素时,只会删掉遇到的第一个目标元素,所以我们继续遍历新列表,如果再遇到1,就继续在原列表中删除,

最终遍历完新列表,也就会在原列表中把所有1都删掉了

上述代码中的temp[:]是拷贝原列表得到新列表的一个方法,也可以通过如下方法复制得到一个新列表

>>> new_temp = temp[:]>>> new_temp = list(temp)>>> new_temp = temp*1>>> import copy>>> new_temp = copy.copy(temp)

关于"python怎么删除列表中特定元素"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

空字符 字符 空格 元素 方法 循环 长度 单词 字符串 字母 拷贝 索引 是由 问题 倒序 知识 学习 原始 也就是 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 广州淘业互联网络科技 互联网金融监管科技数据 互联网科技公司电话 中国互联网科技发展 唐信互联网科技 世界互联网领先科技成果 互联网科技小额贷款 滨湖区互联网智能科技产品供应 中盈科技互联网信息有限公司 互联网教育科技公司vipkid 广州恒生互联网科技有限 互联网金融中的现代科技 深圳互联网科技的发展 广州梦谷互联网科技有限公司领导 江苏互联网智能科技产品出厂价 广西科技产业互联网是什么 艺电能源互联网科技有限公司招聘 宁波允成互联网科技有限公司 互联网科技企业文化 朗新科技与工业互联网 互联网金融科技平台 菲比寻常互联网科技 上海万想互联网科技 无锡溥仪互联网科技有限公司 互联网科技教育视频 科技类公司包括互联网吗 锡山区互联网智能科技产品供应 图游互联网科技 福州德业互联网科技
0