在python列表中删除所有空元素
今天在测试数据的时候偶然发现一个问题,如下:
test = ['a','','b','','c','','']
for i in test:
if i == '':
test.remove(i)
print(test)
Out[3]: ['a', 'b', 'c', '']
for循环居然不能删除列表中所有空值!
偶然收到@有问题尽管问我 发的消息,才对此问题有些明白。下面是他的原话:
for的计数器是依次递增的,但列表的内容已通过remove更改,i迭代的值为a ‘’ ‘’ ‘’然后越界,所以,只能删除前三个空元素。
这个问题算是大家非常容易忽略的细节问题。在遍历列表时,特别要注意遍历过程中不要对原列表进行增删操作,以免影响迭代过程。
这也是把
if i == '' 换成 if len(i) == 0
依旧不行的原因。
搜寻了一下网上的做法,下面两种方法可以做到:
#第一种:
while '' in test:
test.remove('')
#第二种:
mytest = [i for i in test if i != '']
如果遇到一些复杂的问题,不得不有对原列表进行增删操作,可以考虑递归。
在python列表中删除所有空元素的更多相关文章
- python从列表中删除相邻重复元素
这里以一个栗子来用三种方法实现,输入a=['1','1','2','2','1','1'],输出b=['1', '2', '1'] 方法一: list1 = ['] def del_adjacent( ...
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
用运行速度最优的方法从LinkedList列表里删除重复的元素,例如A->B->BB->B->C,返回A->B->BB->C. 考试的时候没完全想明白,考完又 ...
- 用最优方法从LinkedList列表中删除重复元素
用运行速度最优的方法从LinkedList列表里删除重复的元素,例如A->B->BB->B->C,返回A->B->BB->C. 考试的时候没完全想明白,考完又 ...
- 如何在python列表中查找某个元素的索引
如何在python列表中查找某个元素的索引 2019-03-15 百度上回复别人的问题,几种方式的回答: 1) print('*'*15,'想找出里面有重复数据的索引值','*'*15) listA ...
- python 列表中[ ]中冒号‘:’的作用
中括号[ ]:用于定义列表或引用列表.数组.字符串及元组中元素位置 list1 = [, ] list2 = [, , , , , , ] print ] print :] 冒号: 用于定义分片. ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- python中range函数与列表中删除元素
一.range函数使用 range(1,5) 代表从1到4(不包含5),结果为:1,2,3,4 ,默认步长为1 range(1,5,2) 结果为:1, 3 (同样不包含5) ,步长为2 ...
- 7-8 jmu-python-从列表中删除元素 (15 分)
删除列表中所有符合条件的值. 输入格式: 输入n,代表要测试n次.每次测试:首先,输入1行字符串(字符串内的元素使用空格分隔)然后,输入要删除的元素x. 输出格式: 输出删除元素x后的每行字符串.如果 ...
- python列表中,多次追加元素
在列表中追加元素,可以使用append(),列表相加也可以用extend()函数,多次追加元素可以用“+”实现 l=[1,2,3,4,5] x=6 y=7 z=8 l=l+[x]+[y]+[z] pr ...
随机推荐
- 开源Bug管理系统Redmine安装和使用心得
最终忍受不了公司使用论坛+Excel来进行bug反馈和管理工作了,于是花了一个上午时间研究了下bug管理系统.这样一个bug管理系统能够轻松的查看bug新增了哪些,攻克了哪些.当前是谁,要在什么时间解 ...
- ThinkPHP 模板 Volist 标签嵌套循环输出多维数组
ThinkPHP 中对 volist 标签嵌套使用可实现多维数组的输出. volist 嵌套使用 一般的二维数组,可以用 volist 标签直接循环输出.对于多维数组,则需要对其中的数组成员再次使用 ...
- JMeter基础之-使用技巧
在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享.本文内容如下. 如何使用英文界面的jmeter 如何使用镜像服务器 Jmeter分布式测试 启动Deb ...
- 一个stream!=NULL 的问题 fclose.c 47
运行一段时间会出现如下错误提示:Debug Assertion Failed!Program:...File:fseek.cline:100Expression: (stream!=NULL) 点Re ...
- 怎样開始学习ADF和Jdeveroper 11g
先给一些资料能够帮助刚開始学习的人開始学习ADF和Jdeveloper11g 1.首先毫无疑问,你要懂java语言. 能够看看Thinking In Java, 或者原来sun的网上的一些文档Sun' ...
- hdu 1754 I Hate It(线段树之 单点更新+区间最值)
I Hate It Time Limit: 90 ...
- JZOJ.5279【NOIP2017模拟8.15】香港记者
Description
- JZOJ.5257【NOIP2017模拟8.11】小X的佛光
Description
- 【BZOJ4385】[POI2015]Wilcze doły 单调栈+双指针法
[BZOJ4385][POI2015]Wilcze doły Description 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段 ...
- struts2的配置文件为什么可以使用${}符号?
转自:https://www.cnblogs.com/sharpest/p/6030265.html 一.#符号的用途一般有三种. “#”主要有三种用途: 1. 访问OGNL上下文和Action上下文 ...