python 四种方法删除列表里所有空格项

首先,我们来随便写一个带空格的列表:

list1 = ['122','2333','3444',' ','422',' ',' ','54',' ']

相信已经有人尝试过,诸如以下的方式去删掉空格,例如:

# -*- coding:utf-8 -*-
for i in list1:
   if i == ' ':
        list1.remove(' ')
print list1

但是结果你会发现是这样的,它总是不能完全的删完空格,会在末尾留下一个。
这里写图片描述

方法一:
这个时候,可以尝试把‘==’改为in:

# -*- coding:utf-8 -*-
for i in list1:
   if ' ' in list1:
        list1.remove(' ')
print list1

这里写图片描述

之前我在网上看过用‘’join的方式,链接找不到了,这种方法它确实能删掉带一个长度的空字符串‘ ’,但是对于间隔比较规律的还好,间隔不规律的就不太友好了,并且无论间隔规律与否,它都会生成0长度‘’空字符串的。

方法二:
方法一是后来写这篇文章的时候测试文章最开头那个错误的写法的时候,因为记得不太清,无意中想到了in,结果发现结果是对的,我自己最先想到的方法是这样的,先获取空格的个数,然后遍历,逐个删除:

for i in range(list1.count(' ')):
    list1.remove(' ')

这里写图片描述

方法三:
然后用了for我就在想可不可以用while,用while怎么写,测试了一下发现果然可以:

while ' ' in list1:
    list1.remove(' ')
print list1

这里写图片描述


又增了一种哈哈哈。

以上是比较早写的了,用的大多是remove,现在学了些优化,然后加上评论里的提示,才发现推导式也可以,感谢了!亲测有效!这种才最符合python的优雅和效率!
这里写图片描述

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值