递归删除所有空格(列表列表…)

2024-05-13 20:06:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从输入中删除所有空格,这是列表列表。。。我不知道该怎么办

def removespace(lst):
   if type(lst) is str:
      return lst.replace(" ","")
   else:
      ?????

示例:

^{pr2}$

输出应为:

lst2 = [apple,pie,[sth,[banana,asd,[sdfdsf,[fgg]]]]] 

如果lst包含整数或浮点怎么办?我收到整数错误。在

输入示例:

 L = [['apple', '2 * core+1* sth'], ['pie', '1*apple+1*sugar+1*water'], ['water', 60]]

Tags: 示例apple列表ifisdeftype整数
3条回答

我建议遵循EAFP并捕获异常,而不是使用isinstance。另外,千万不要错过使函数更通用的机会:

def rreplace(it, old, new):
    try:
        return it.replace(old, new)
    except AttributeError:
        return [rreplace(x, old, new) for x in it]

示例:

^{pr2}$

或者更普通的,尽管这可能会对你的问题起到过度的作用:

def rapply(it, fun, *args, **kwargs):
    try:
        return fun(it, *args, **kwargs)
    except TypeError:
        return [rapply(x, fun, *args, **kwargs) for x in it]

a = [" foo", ["    spam", "ham"], "  bar"]
print rapply(a, str.replace, " ", "")     
print rapply(a, str.upper)     
def removespace(lst):
    if type(lst) is str:
        return lst.replace(" ","")
    else:
        return [removespace(elem) for elem in lst]



lst = [' apple', 'pie ', ['sth', ['banana', 'asd', [' sdfdsf', ['fgg']]]]] 
print removespace(lst)

印刷品

^{pr2}$
def removespace(a):
    if type(a) is str:
        return a.replace(" ", "")
    elif type(a) is list:
        return [removespace(x) for x in a]
    elif type(a) is set:
        return {removespace(x) for x in a}
    else:
        return a

下面是一个示例:

^{pr2}$

相关问题 更多 >