您好,登錄后才能下訂單哦!
怎么在Python中使用filter去除列表中的空字符串?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在 Python中,認為以下值為假:
None # None值
False # False值
0 # 數值零不管它是int,float還是complex類型
'',(),[] # 任何一個空的序列
{} # 空的集合
如果一個列表中含上面值為假的元素,要去除的話,可以使用內置函數的filter默認的參數None。
可以先看下filter內置函數的幫助文檔
>>> 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文檔可以看出,第一個參數可以為一個函數,也可以為None.
如果第一個參數為函數
>>> def odd(n): ... return n % 2 == 1 ... >>> filter(odd, range(10)) # 第一個參數為一般函數 [1, 3, 5, 7, 9] >>> >>> filter(lambda x: x % 2 == 0, range(10)) # 第一個參數為匿名函數 [0, 2, 4, 6, 8]
如果第一個參數為None的話,則默認會去除序列中所有值為假的元素
>>> L = [1,'',0,'A',None,[1,2],False,3.14,[],{'a':1}, {}] >>> filter(None, L) [1, 'A', [1, 2], 3.14, {'a': 1}] >>>
如果復雜一點,要過濾列表的False的值過濾點,再將" "文件填充為"default",可以這樣:
>>> L = [[], 1, "", None, False, {}, 3.14, " "] >>> map(lambda x:x if x != " " else "default", filter(None, L)) [1, 3.14, 'default']
如果再復雜一點,即要去除值為假的元素,而且要去除諸如:' ', " "等多個空字符的元素,上面的就不行了。這個時候就必須做下處理,增加一個函數來處理內含一個或多個空字符的元素:
>>> 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}] >>>
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。