溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Python中使用filter去除列表中的空字符串

發(fā)布時間:2021-03-23 15:23:27 來源:億速云 閱讀:888 作者:Leah 欄目:開發(fā)技術(shù)

怎么在Python中使用filter去除列表中的空字符串?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

在 Python中,認(rèn)為以下值為假:

None # None值

False # False值

0 # 數(shù)值零不管它是int,float還是complex類型

'',(),[] # 任何一個空的序列

{} # 空的集合

如果一個列表中含上面值為假的元素,要去除的話,可以使用內(nèi)置函數(shù)的filter默認(rèn)的參數(shù)None。

可以先看下filter內(nèi)置函數(shù)的幫助文檔

>>> help(filter)
Help on built-in function filter in module __builtin__:
 
filter(...)
 filter(function or None, sequence) -> list, tuple, or string
 
 Return those items of sequence for which function(item) is true. If
 function is None, return the items that are true. If sequence is a tuple
 or string, return the same type, else return a list.
 
>>>

從上面的doc文檔可以看出,第一個參數(shù)可以為一個函數(shù),也可以為None.

如果第一個參數(shù)為函數(shù)

>>> def odd(n):
...  return n % 2 == 1
...
>>> filter(odd, range(10))     # 第一個參數(shù)為一般函數(shù)
[1, 3, 5, 7, 9]
>>>
>>> filter(lambda x: x % 2 == 0, range(10)) # 第一個參數(shù)為匿名函數(shù)
[0, 2, 4, 6, 8]

如果第一個參數(shù)為None的話,則默認(rèn)會去除序列中所有值為假的元素

>>> L = [1,'',0,'A',None,[1,2],False,3.14,[],{'a':1}, {}]
>>> filter(None, L)
[1, 'A', [1, 2], 3.14, {'a': 1}]
>>>

如果復(fù)雜一點,要過濾列表的False的值過濾點,再將" "文件填充為"default",可以這樣:

>>> L = [[], 1, "", None, False, {}, 3.14, " "]
>>> map(lambda x:x if x != " " else "default", filter(None, L))
[1, 3.14, 'default']

如果再復(fù)雜一點,即要去除值為假的元素,而且要去除諸如:' ', " "等多個空字符的元素,上面的就不行了。這個時候就必須做下處理,增加一個函數(shù)來處理內(nèi)含一個或多個空字符的元素:

>>> L = [1,'',0,'A'," ", None,[1,2],False,3.14,[],{'a':1}, {}]
>>> filter(lambda s: s and (type(s) != str or len(s.strip()) > 0), L)
[1, 'A', [1, 2], 3.14, {'a': 1}]
>>>

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI