2014-11-04 49 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