你怎么知道python中的单词是否按字母顺序排列?

use*_*377 1 python

我真的不知道该怎么做.到目前为止我只有这个:

alphabet = 'abcdefghijklmnopqrstuvwxyz'
Run Code Online (Sandbox Code Playgroud)

我应该通过一个文本文件,按字母顺序计算单词数.我做不到

if word in alphabet:
Run Code Online (Sandbox Code Playgroud)

因为这需要单词实际上按顺序包含所有这些字母.

澄清一下:"打击"会通过测试而"打击"则不会.我有一个包含数千个单词的列表,我需要浏览整个列表并计算按字母顺序排列的单词数.对不起以前的任何混淆.

Nik*_* B. 6

非常简单:

>>> alphabet = 'abcdefghijklmnopqrstuvwxyz'
>>> list(alphabet) == sorted(alphabet)
True
>>> list('blow') == sorted('blow')
True
>>> list('suck') == sorted('suck')
False
Run Code Online (Sandbox Code Playgroud)

所以知道我们可以定义我们需要的谓词:

>>> alphabetical = lambda w: list(w.lower()) == sorted(w.lower())
Run Code Online (Sandbox Code Playgroud)

并将其应用于列表:

>>> lst = ['blow', 'suck', 'abc']
>>> filter(alphabetical, lst)
['blow', 'abc']
Run Code Online (Sandbox Code Playgroud)

从那里开始计算结果并不是一个很大的步骤:)还有一些其他的事情需要考虑:

  • 排序是O(n*log n),尽管这个问题很容易解决O(n).这可能没问题,因为单词通常具有有限数量的字符并且sorted在C中实现,因此非常快
  • 如果你真的需要效率,你甚至可以使用sum(1 for w in w if ...)技巧,它使用生成器表达式而不是构建列表.