Python:字母数组排序

时间:2017-06-23 15:47:47

标签: python arrays loops sorting

我正在尝试对正则表达式进行示例练习。找到字母表的所有字母。对数组进行排序,最后消除所有重复。

>>> 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','e'......]

所以我做了这个

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

然而它没有用。如何删除重复?

1 个答案:

答案 0 :(得分: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']