2015-03-08 85 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

您檢查元素是否爲列表以確定是否遞歸。如果它不是一個列表,那麼你需要確定這個元素是否是一個字符串(在這種情況下大寫)或不是(在這種情況下,只是返回它未經修改)。

不會給代碼 - 你幾乎沒有,這是如果你被允許改變輸入好的做法=)

相關問題