移除空字符串 | 学习笔记

简介: 快速学习 移除空字符串

开发者学堂课程【Python入门 2020年版移除空字符串】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10303


移除空字符串


内容介绍

一、删除列表中的空字符串

二、课程建议


一、删除列表中的空字符串

1.使用 for....in(存在 bug

即一个列表 words 中有 hellogoodyesok 和一些空字符,现在我们要将其中的空字符串全部取消然后输出。只需要遍历所有元素,为空时删除即可。

(1) 代码

#删除列表里的空字符串

words = [ ‘hello’ , ‘good ’, ‘ ’, 'yes ', 'ok ', ‘ ’]

#words = [ ’hello', 'good ’ , ’yes ’ , ’ok ’]预想输出结果

for word in words ://遍历循环进行比较列表中的元素

if word == “”://如果为空

words.remove(word)

//使用 remove 方法移除当前元素

print(words)

(2) 输出结果

[ ’hello', 'good ’ , ’yes ’ , ’ok ’]

2.存在 bug

如果列表元素中存在两个连在一起的空字符,列表中的空字符就无法被完全删除。原因是因为在使用 for……in 循环时最好不要对元素进行增删操作。

问题在于在 forin 循环中需要连续删除时容易漏掉,下标也易发生变化。

1)代码

words = [ ‘hello’ , ‘good ’, ‘ ’, ‘ ’,'yes ', 'ok ', ‘ ’]

#在使用 for……in 循环时最好不要对元素进行增删操作。

for word in words ://遍历循环进行比较列表中的元素

if word == “”://如果为空

words.remove(word)

//使用 remove 方法移除当前元素

print(words)

2)输出结果

[ ’hello', 'good ’ , ’yes ’ , ’ok ’,‘ ’] //输出结果仍含有空字符

3.  解决方法--使用 while

使用 while 循环,同时注意 if word == “”: 其中的“”不能加空格,否则就不再表示空字符。再添加 i -=1使得光标在每次删除空字符时再返回重新看一眼,避免遗漏。

(1) 代码

words = [ ‘hello’ , ‘good ’, ‘ ’, ‘ ’,'yes ', 'ok ', ‘ ’]

i= 0

while i < len(words):

if words[i]  ==  "":

words.remove(words[i])

i -= 1

i += 1

print(words)

(2) 输出结果

[ ’hello', 'good ’ , ’yes ’ , ’ok ’]

4.改进版-删除空字符

但上述方法仍有些麻烦,同时同学们所提出的 join 方法也行不通。优化的写法即新建一个空列表 words2,遍历判断words 中不为空字符的元素,将其添加至空字符 words2中,再将 words2赋给 word,输出 word

(1) 代码

words2 =[]  //新建列表 words2

for word in words : //依次将 words 里的元素赋给 word

if word != "":        //如果不为空字符

words2.append(word)  //word 添加至 word2

words = words2 //words2赋给 words

print(words) //输出 words

(2) 输出结果

[ ’hello', 'good ’ , ’yes ’ , ’ok ’]


二、课程建议

当听过许多讲解之后,仍然面对题目没有头绪,是十分正常的情况。但是通过不断的了解和锻炼自己的编程思维。

就好比我们学会数学中的加减乘除,但并不一定就会所有的算术题。

而在编程中也有一些套路,比如判断列表中是否存在用 in 运算符结合 if....else,同时各种假设成立法,计数器法等等。当忘记方法的拼写单词也不必着急,跟着老师的讲解,长期积累即可。

同时课程的编程题难度也是稍高,即便做不出业不必有挫败感,把老师所讲授的知识点给摸清即可。

相关文章
MOSFET和BJT比较及其基本放大电路共性归类
MOSFET(金属氧化物半导体场效应晶体管)和BJT(双极型晶体管)是两种常见的放大器件,它们在一些方面有相似之处,但在其他方面有一些显著的差异。
814 0
|
JavaScript
VUE element-ui之上传身份证照片正反面详细代码
VUE element-ui之上传身份证照片正反面详细代码
1650 0
VUE element-ui之上传身份证照片正反面详细代码
|
5月前
|
传感器 存储 Java
Android 3D效果的实现
本文详细讲解了如何在Android中实现3D效果,基于官方Demo并结合实际需求进行调整。通过传感器(Sensor)获取设备旋转数据,利用OpenGL ES绘制3D立方体,实现了动态旋转的视觉效果。文章分为需求分析、效果展示、实现步骤及源码解析,涵盖传感器注册与注销、OpenGL核心方法使用等内容,适合初学者学习参考。文末附完整代码,便于实践操作。
163 0
Android 3D效果的实现
|
11月前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
226 2
|
安全 5G 网络安全
什么是 Wi-Fi 热点?
【8月更文挑战第24天】
2972 0
|
负载均衡 网络协议 算法
【Docker 专栏】Docker 容器内服务发现与负载均衡
【5月更文挑战第8天】本文探讨了Docker容器中的服务发现与负载均衡。服务发现通过环境变量、DNS或集中式系统(如Consul、Zookeeper)来定位服务实例。负载均衡则采用轮询、随机等算法,可通过软件负载均衡器、云服务或容器编排工具(如Kubernetes)实现。服务发现与负载均衡结合使用,确保请求有效分发和系统稳定性。面对动态性、网络延迟及大规模部署的挑战,需采取相应措施优化。选择合适技术并持续优化,能提升Docker容器应用的性能和可靠性。
581 5
【Docker 专栏】Docker 容器内服务发现与负载均衡
|
存储 运维 安全
云计算——ACA学习 数据中心概述
云计算——ACA学习 数据中心概述
476 0
|
测试技术
iozone如何进行分布式性能测试
iozone的一个特性就是可以进行分布式测试,对分布式存储系统进行测试
615 0
|
机器学习/深度学习 存储 人工智能
2012-2022: AI革命10周年,Hinton等大佬重拳出击「深度学习撞墙」论
2012-2022: AI革命10周年,Hinton等大佬重拳出击「深度学习撞墙」论
448 0
|
开发工具
如何查看CSDN博客的积分与对应的权益
如何查看CSDN博客的积分与对应的权益
如何查看CSDN博客的积分与对应的权益