2017-06-23 77 views
0

我正在嘗試正則表達式的示例練習。查找所有字母的字母。對數組進行排序,最後消除所有重複。Python:Alphabet數組排序

>>> letterRegex = re.compile(r'[a-z]') 
>>> alphabets = letterRegex.findall("The quick brown fox jumped over the lazy dog") 
>>> alphabets.sort() 
>>> alphabets 
['a', 'b', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'f', 'g', 'h', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'o', 'o', 'o', 'p', 'q', 'r', 'r', 't', 'u', 'u', 'v', 'w', 'x', 'y', 'z'] 

做完這個排序後,我試着做一個循環來消除數組中的所有重複。 e.g [... 'E', 'E' ...]

所以,我沒有這個

>>> i, j = -1,0 
>>> for items in range(len(alphabets)): 
     if alphabets[i+1] == alphabets[j+1]: 
      alphabets.remove(alphabets[j]) 

但是它沒有工作。我如何刪除重複?

+2

你已經發布的代碼做不會產生你所顯示的結果。請使用您正在使用的確切代碼及其產生的結果來更新您的文章 – inspectorG4dget

+1

以擺脫重複性字母,您可以執行'list(set(alphabets))。sort()' – depperm

+0

[Remove items from一個列表,而迭代](https://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating) – fredtantini

回答

0

這裏的移除共同出現一個更簡單的方法:

import itertools 

L = ['a', 'b', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'f', 'g', 'h', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'o', 'o', 'o', 'p', 'q', 'r', 'r', 't', 'u', 'u', 'v', 'w', 'x', 'y', 'z'] 

answer = [] 
for k,_group in itertools.groupby(L): 
    answer.append(k) 

或者簡單一些:

answer = [k for k,_g in itertools.groupby(L)] 

兩個單產:

In [42]: print(answer) 
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 't', 'u', 'v', 'w', 'x', 'y', 'z']