2011-09-14 51 views
1

我有一個單詞列表,我想通過文字列表中的排序列表中的每個字符:For循環 - 按字母順序排序的話

['alumni', 'orphan', 'binge', 'peanut', 'necktie'] 

我想整理這些字母,這樣他們就結束正在向上的名單:

['ailmnu', 'ahnopr', 'begin', 'aenptu', 'ceeiknt'] 

到目前爲止,我的代碼已經尷尬:

for i in range(len(splitfoo)): 
    splitedfootmp = sorted(splitfoo[i]) 

,其分離字成這樣的字符:['a', 'i', 'l', 'm', 'n', 'u'] 但我不知道如何把它變回['ailmnu']

有沒有經歷過所有的麻煩,甚至有辦法做到這一點? 在此先感謝!

回答

7

要很好地做你的整個事情:

items = ['alumni', 'orphan', 'binge', 'peanut', 'necktie'] 
sorted_items = ["".join(sorted(item)) for item in items] 

這裏我使用的是list comprehension,這使得小片段的一個很好的方式喜歡這個。你可以,如果你想,展開它出來:

items = ['alumni', 'orphan', 'binge', 'peanut', 'necktie'] 
sorted_items = [] 
for item in items: 
    sorted_items.append("".join(sorted(item))) 

但顯然,清單理解是在這種情況下的解決方案(除上述或使用map()更快)一個更好的。

同樣值得注意的是,使用for循環並不是很pythonic。比較:

for i in range(len(splitfoo)): 
    splitedfootmp = sorted(splitfoo[i]) 

for item in splitfoo: 
    splitedfootmp = sorted(item) 

他們都做同樣的事情,但後者更清晰和pythonic。

4
In [1]: ''.join(['a', 'i', 'l', 'm', 'n', 'u']) 
Out[1]: 'ailmnu' 

這是一個完整的程序:

In [2]: l = ['alumni', 'orphan', 'binge', 'peanut', 'necktie'] 

In [3]: map(lambda w: ''.join(sorted(w)), l) 
Out[3]: ['ailmnu', 'ahnopr', 'begin', 'aenptu', 'ceeiknt'] 
0

看看string.join()

您可能還可以使用map()函數來簡化代碼。