Skip to main content
 首页 » 编程设计

python之你如何判断一个单词在 python 中是否按字母顺序排列

2025年05月04日10虾米姐

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

alphabet = 'abcdefghijklmnopqrstuvwxyz' 

我应该浏览一个文本文件并按字母顺序计算单词数。 我做不到

if word in alphabet: 

因为这要求单词实际上按顺序排列所有这些字母。

澄清一下:'blow' 会通过测试而 'suck' 不会。 我有一个包含数千个单词的列表,我需要遍历整个列表并计算按字母顺序排列的单词数。对于之前的任何混淆,我们深表歉意。

请您参考如下方法:

非常简单:

>>> alphabet = 'abcdefghijklmnopqrstuvwxyz' 
>>> list(alphabet) == sorted(alphabet) 
True 
>>> list('blow') == sorted('blow') 
True 
>>> list('suck') == sorted('suck') 
False 

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

>>> alphabetical = lambda w: list(w.lower()) == sorted(w.lower()) 

并将其应用于列表:

>>> lst = ['blow', 'suck', 'abc'] 
>>> filter(alphabetical, lst) 
['blow', 'abc'] 

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

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