2015-03-08 88 views
1

我想大写这个嵌套列表中每个单词的第一个字母,但我似乎无法弄清楚如何让Python“忽略”最后的元素8和7,但仍然将它们保存在列表中。 (仅供参考,我只有编程现在大约两个星期,所以这一切都还是很新的我)python大写嵌套列表的字符串和整数

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])

希望能得到某种暗示或类似 在此先感谢

回答

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] 
+0

这可能是一个愚蠢的问题,但到底是什么 '它' 的主张[it.title()? – Calchas93 2015-03-09 19:52:30

+0

@ Calchas93:'它在项目中'< - 遍历'item'中的元素,调用每个元素'it' – inspectorG4dget 2015-03-09 20:07:31

0

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

不会给代码 - 你几乎没有,这是如果你被允许改变输入好的做法=)

相关问题