2014-11-04 43 views
-1

我試圖將函數應用於列表內的列表中的字符串,然後以相同的形式返回它。例如,我有一個包含兩個子列表中的一些字符串的大列表。我想給每個字符串添加一個字母a,然後以相同的形式返回我的列表。更改多維數組中的字符串

some_large_list = [['str1', 'str2', 'str3'], ['str4', 'str5', 'str6']] 

new_large_list = [] 

for lst in some_large_list: 
    for word in lst: 
     new_large_list.append(add_letter_a(word)) 

new_large_list = [['str1a', 'str2a', 'str3a'], ['str4a', 'str5a', 'str6a']] 

而是我得到:

new_large_list = ['str1a', 'str2a', 'str3a', 'str4a', 'str5a', 'str6a'] 

如何保持自己的獨立子列表中的字符串?

回答

0

您正在瀏覽列表清單,您應該以相同的方式重新構建它。除此之外,你應該實現你的功能add_letter_a。 嘗試使用列表s。存儲您重新創建的項目,以及另一個主要列表來存儲列表。 您的代碼應該是這樣的:

some_large_list = [['str1', 'str2', 'str3'], ['str4', 'str5', 'str6']] 

new_large_list = [] 

def add_letter_a(word): 
    return word+'a' 

for lst in some_large_list: 
    s=[] 
    for word in lst: 
     s.append(add_letter_a(word)) 
    new_large_list.append(s) 

print new_large_list 

輸出:

[['str1a', 'str2a', 'str3a'], ['str4a', 'str5a', 'str6a']] 

有更好的辦法用做list comprehension.

some_large_list = [['str1', 'str2', 'str3'], ['str4', 'str5', 'str6']] 
new_large_list = [[ word+'a' for word in listOfWords ] for listOfWords in some_large_list ] 
print new_large_list