移除空字符串 | 学习笔记

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

开发者学堂课程【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(双极型晶体管)是两种常见的放大器件,它们在一些方面有相似之处,但在其他方面有一些显著的差异。
898 0
|
JavaScript
VUE element-ui之上传身份证照片正反面详细代码
VUE element-ui之上传身份证照片正反面详细代码
1741 0
VUE element-ui之上传身份证照片正反面详细代码
|
NoSQL 关系型数据库 API
python常用库汇总(下)
python常用库汇总(下)
316 0
|
7月前
|
传感器 存储 Java
Android 3D效果的实现
本文详细讲解了如何在Android中实现3D效果,基于官方Demo并结合实际需求进行调整。通过传感器(Sensor)获取设备旋转数据,利用OpenGL ES绘制3D立方体,实现了动态旋转的视觉效果。文章分为需求分析、效果展示、实现步骤及源码解析,涵盖传感器注册与注销、OpenGL核心方法使用等内容,适合初学者学习参考。文末附完整代码,便于实践操作。
243 0
Android 3D效果的实现
|
3月前
|
人工智能 数据可视化 数据库
如何与AI有效沟通:描述问题及提示词技巧
本文整理自Anthropic的AI素养课程,系统梳理“描述能力”(Description)三大维度:结果、过程与行为描述,结合提示工程六大技巧,揭示如何通过清晰沟通将AI从工具变为思维伙伴,提升人机协作效能。
488 4
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
272 2
|
8月前
|
人工智能 API 计算机视觉
AI-ClothingTryOn:服装店老板连夜下架试衣间!基于Gemini开发的AI试衣应用,一键生成10种穿搭效果
AI-ClothingTryOn是基于Google Gemini技术的虚拟试衣应用,支持人物与服装照片智能合成,可生成多达10种试穿效果版本,并提供自定义提示词优化功能。
688 18
AI-ClothingTryOn:服装店老板连夜下架试衣间!基于Gemini开发的AI试衣应用,一键生成10种穿搭效果
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
今日热门论文推荐:Seedream、LMM-R1、YuE、Gemini Embedding
由Cohere、SEACrowd等机构联手打造,SEA-VL是一个面向东南亚地区的多文化视觉-语言数据集,填补了AI模型在该地区文化细微差别理解上的空白。该工作通过众包、爬取和生成三种方式收集了128万张文化相关图像,结合本地贡献者确保数据的高质量和多样性,推动了更具包容性的AI发展。
257 13
|
安全 5G 网络安全
什么是 Wi-Fi 热点?
【8月更文挑战第24天】
3644 0
|
负载均衡 网络协议 算法
【Docker 专栏】Docker 容器内服务发现与负载均衡
【5月更文挑战第8天】本文探讨了Docker容器中的服务发现与负载均衡。服务发现通过环境变量、DNS或集中式系统(如Consul、Zookeeper)来定位服务实例。负载均衡则采用轮询、随机等算法,可通过软件负载均衡器、云服务或容器编排工具(如Kubernetes)实现。服务发现与负载均衡结合使用,确保请求有效分发和系统稳定性。面对动态性、网络延迟及大规模部署的挑战,需采取相应措施优化。选择合适技术并持续优化,能提升Docker容器应用的性能和可靠性。
625 5
【Docker 专栏】Docker 容器内服务发现与负载均衡