python利用字符串和整数大写嵌套列表

时间:2015-03-08 17:02:23

标签: python string list nested capitalize

我正在尝试将这个嵌套列表中每个单词的第一个字母大写,但我似乎无法弄清楚如何使Python“忽略”最后的元素8和7,但仍将它们保留在列表中。 (是的,我现在只有两周的编程,所以这对我来说还是很新鲜的)

def capitalize_nested(names):
    if isinstance(names, list):
        return [capitalize_nested(s) for s in names]
    else:
        return names.capitalize()

capitalize_nested([['Loraine','Jessica'],'Philip',['Dave', 'Jones'], 8, 7])

希望得到某种暗示或类似的东西 提前谢谢

2 个答案:

答案 0 :(得分:0)

检查元素是否为列表以确定是否递归。如果它不是一个列表,那么你需要确定该元素是否是一个字符串(在这种情况下是大写)或不是(在这种情况下只是不加修改地返回它)。

不打算提供代码 - 你几乎就在那里,这是一个很好的做法=)

答案 1 :(得分:0)

如果允许您更改输入,那么您可以在迭代列表的同时就地执行此操作:

def capitalizeNested(L):
    for i,item in enumerate(L):
        if isinstance(item, list):
            L[i] = [it.title() for it in item]
        elif isinstance(item, str):
            L[i] = item.title()

输出:

In [54]: L = [['loraine','jessica'],'philip',['dave', 'jones'], 8, 7]

In [55]: capitalizeNested(L)

In [56]: L
Out[56]: [['Loraine', 'Jessica'], 'Philip', ['Dave', 'Jones'], 8, 7]