Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想从列表中删除空字符串_Python_List - Fatal编程技术网

Python 我想从列表中删除空字符串

Python 我想从列表中删除空字符串,python,list,Python,List,有人能告诉我为什么我不能用下面的代码删除空字符串吗 numlist = list() tim = "s x s f f f" timo = tim.strip() for line in timo: numlist.append(line) list(filter(None, numlist)) print(numlist) 输出:['s'、''x'、''s'、''f'、''f'、''f'] 所需输出:['s'、'x'、's'、'f'、'f']您忘记将筛选结

有人能告诉我为什么我不能用下面的代码删除空字符串吗

numlist = list()

tim = "s x s f f f"
timo = tim.strip()
for line in timo:

    numlist.append(line)

list(filter(None, numlist))

print(numlist)
输出:
['s'、''x'、''s'、''f'、''f'、''f']


所需输出:
['s'、'x'、's'、'f'、'f']
您忘记将筛选结果分配回
numlist
,因此它创建了新的
列表并将其丢弃。只要排队就行了:

numlist = list(filter(None, numlist))
也就是说,它不会做你想做的事情,因为一个单一空间的字符串仍然是真实的。如果要将空格排除为truthy,一个简单的调整是:

numlist = list(filter(str.strip, numlist))
或者进一步简化(但如果输入不总是带有空格分隔的单个字符,则使用不同的行为),将整个代码替换为:

tim = "s x s f f f"
numlist = tim.split()
print(numlist)

由于无参数
split
将在空格上拆分,删除前导空格和尾随空格,并将非空格组件的
列表作为单个有效操作返回。

使用
split
而不是
strip
<代码>条带
用于删除前导字符和尾随字符

In [35]: tim = "s x s f f f"

In [36]: tim.split()
Out[36]: ['s', 'x', 's', 'f', 'f', 'f']

值得注意的是,
str.split()
将删除包括换行符和制表符在内的所有空白,这可能是不可取的。@SamMorgan:对
过滤器
解决方案的半自动修复也是如此(因为它是按照
strip
的方式实现的,它会去除所有空白)。值得一提,但至少在OP的情况下,这似乎并不重要。