0

可能重复:
检查字符串的字符是否按字母顺序升序,其升序是否均匀分布 python

我有一个字符串/单词列表:

mylist = ['twas', 'brillig', 'and', 'the', 'slithy', 'toves', 'did', 'gyre', 'and', 'gimble', 'in', 'the', 'wabe', 'all', 'mimsy', 'were', 'the', 'borogoves', 'and', 'the', 'mome', 'raths', 'outgrabe', '"beware', 'the', 'jabberwock', 'my', 'son', 'the', 'jaws', 'that', 'bite', 'the', 'claws', 'that', 'catch', 'beware', 'the', 'jubjub', 'bird', 'and', 'shun', 'the', 'frumious', 'bandersnatch', 'he', 'took', 'his', 'vorpal', 'sword', 'in', 'hand', 'long', 'time', 'the', 'manxome', 'foe', 'he', 'sought', 'so', 'rested', 'he', 'by', 'the', 'tumtum', 'tree', 'and', 'stood', 'awhile', 'in', 'thought', 'and', 'as', 'in', 'uffish', 'thought', 'he', 'stood', 'the', 'jabberwock', 'with', 'eyes', 'of', 'flame', 'came', 'whiffling', 'through', 'the', 'tulgey', 'wood', 'and', 'burbled', 'as', 'it', 'came', 'one', 'two', 'one', 'two', 'and', 'through', 'and', 'through', 'the', 'vorpal', 'blade', 'went', 'snicker-snack', 'he', 'left', 'it', 'dead', 'and', 'with', 'its', 'head', 'he', 'went', 'galumphing', 'back', '"and', 'has', 'thou', 'slain', 'the', 'jabberwock', 'come', 'to', 'my', 'arms', 'my', 'beamish', 'boy', 'o', 'frabjous', 'day', 'callooh', 'callay', 'he', 'chortled', 'in', 'his', 'joy', '`twas', 'brillig', 'and', 'the', 'slithy', 'toves', 'did', 'gyre', 'and', 'gimble', 'in', 'the', 'wabe', 'all', 'mimsy', 'were', 'the', 'borogoves', 'and', 'the', 'mome', 'raths', 'outgrabe']

首先,我只需要获取其中包含 3 个或更多字符的单词 - 我假设一个 for 循环用于那个或其他东西。然后我需要得到一个单词列表,其中仅包含按字母顺序从左到右增加并且相隔固定数字的单词。(例如 ('ace', 2) 或 ('ceg', 2) 不必为 2)列表还必须按字母顺序排序,并且每个元素应该是由单词和字符差异组成的元组。

我想我必须使用 for 循环,但我不确定在这种情况下如何使用它,也不知道如何做第二部分。

对于上面的列表,我应该得到的答案是:

([])

我没有最新版本的python。

任何帮助是极大的赞赏。

4

2 回答 2

0

分步解决这个问题

  1. 过滤长度 >= 3 的单词

    [w for w in mylist if len(w) >= 3]

  2. 看看单词是否定期增加?计算连续字母之间的差异,创建一个集合并检查长度是否 == 1

    diff =lambda word:len({ord(n)-ord(c) for n,c in zip(word[1:],word)}) == 1

  3. 现在使用这个新功能来过滤剩余的单词

    [w for w in mylist if len(w) >= 3 and diff(w)]

于 2012-04-14T06:00:34.670 回答
0

您可能应该从学习如何使用for 循环开始。for 循环将从集合中取出内容并将它们分配给变量:

for letter in "strings are collections":
    print letter

或者..

for thing in ['this is a list', 'of', 4, 'things']:
    if thing == 4:
        print '4 is in the list'

如果你能做的不止这些,那就尝试一些事情,找出你卡在哪里,并更具体地询问你需要什么帮助。

于 2012-04-14T05:16:42.637 回答