【问题标题】:Python: Alphabet array sortPython:字母数组排序
【发布时间】:2017-06-23 15:47:46
【问题描述】:

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

>>> 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])

但是没有用。如何删除重复?

【问题讨论】:

  • 您发布的代码不会产生您显示的结果。请使用您正在使用的确切代码及其产生的结果更新您的帖子
  • 摆脱重复的字母,你可以这样做list(set(alphabets)).sort()
  • 我不小心关闭了 shell,现在我不确定是什么代码给出了这些结果。但我会编辑问题,谢谢。

标签: python arrays loops sorting


【解决方案1】:

这里有一个更简单的去除共现的方法:

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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多