我有一个python列表,其中包含各种单词。{I要从列表中找出所有单词。
例如:
import sys
words_list=['llaa','lala','alal','aall','abcd','egg','adore', ...]
word=sys.argv[1]
我输入laal
作为系统argv[1] .
这里我要列出laal
中words_list
的所有排列。这个单词表可能包含数千个单词。请告诉我最有效的方法。我不想使用sorted
或collections.Counter
方法。在
Tags:
如果我对你的问题理解正确,类似这样的东西会向你展示所有包含你测试词中每个字母的字符串:
这将在给定的示例中给出
['llaa', 'lala', 'alal', 'aall']
。。。在它的效率并不高——特别是,排序和不求证
word
会减少需要进行的比较的数量。一种方法就是用单词来做一套。在你的问题的另一种解读可能是,你想找到所有的单词,这些单词是给定单词的排列,例如,与上面相同的结果,但是像
lalafoo
这样的单词不匹配,因为它包含的字母不在测试字符串中。然而,你的问题有点模糊,你到底想要什么。在只使用python和list是没有“高效”的方法的。这将永远是一个O(n)算法。在
您只需:
编辑
我现在要的是每一个字母的号码,包括你的号码。在
首先将argv[1]放入一个列表中,然后对其进行排序,这样就不必每次都对其进行排序。这样可以避免使用
sorted
:然后定义一个函数来确定单词是否匹配:
^{pr2}$最后,列表理解会过滤掉不匹配的单词,只留下匹配的单词:
早先的回应:
我会用列表理解:
如果您想检查单词中是否有字母的,请检查是否存在集合交集:
相关问题 更多 >
编程相关推荐