python replace None with blank in list using list Comprehensions or something else? Also a nested list solution
本问题已经有最佳答案,请猛点这里访问。
试图用
试了很多次,这是我最近的一次。
我原以为是
如果它是这样嵌套的:
埃多克斯1〔6〕
你还能用列表理解吗?
只需按以下方式修改代码:
1 2 3 4 | b = ['' if x is None else x for x in a] #and use is None instead of == None >>> print b ['', '', '2014-04-27 17:31:17', '', ''] |
解释
对于嵌套列表,可以执行以下操作:
1 | b = [['' if x is None else x for x in c] for c in a] |
号
您可以使用
1 2 3 | >>> a = [None, None, '2014-04-27 17:31:17', None, None] >>> print [x or"" for x in a] ['', '', '2014-04-27 17:31:17', '', ''] |
…因为
1 2 3 4 | >>> None or"" '' >>>"blah" or"" 'blah' |
。
…尽管这可能不理想,因为它将取代任何错误的值,例如:
1 2 | >>> 0 or"" '' |
。
如果这是您的问题,那么sshashank124的回答中提到的更明确的
你甚至不用理解:
如果事先知道列表嵌套的深度(尽管它不太可读),则可以使用理解,对于任意嵌套列表,可以使用如下简单的"递归映射"函数:
1 2 3 4 | def maprec(obj, fun): if isinstance(obj, list): return [maprec(x, fun) for x in obj] return fun(obj) |
用途:
1 | new_list = maprec(nested_list, lambda x: '' if x is None else x) |
。