我想从单词列表中找到创建字谜列表。我应该在代码或递归中使用另一个循环吗?在
some_list = ['bad', 'app', 'sad', 'mad', 'dab','pge', 'bda', 'ppa', 'das', 'dba']
new_list = [some_list[0]]
i = 0
while i+1 < len(some_list):
if (''.join(sorted(some_list[0]))) == (''.join(sorted(some_list[i+1]))):
new_list.append(some_list[i+1])
i = i+1
else:
i = i+1
print(new_list)
['bad', 'dab', 'bda', 'dba']
。但我也想要更多的名单
来自some_list
的其他字谜。在我希望输出是:
-['app', 'ppa']
-['bad', 'dab', 'bda', 'dba']
-['sad', 'das']
我建议您编写Python,而不是Java或您在那里模拟的任何其他语言。以下是Python中的核心代码,有正常的循环,没有所有不必要的东西:
我看不出递归有什么用,但是可以,你可以用一个外循环来找到其他的语法组。在
虽然我是这样做的,但是使用有用的itertools.groupby:
^{pr2}$打印出:
对分组进行排序的更改问题的替代解决方案:
输出:
你的问题是你在列表上循环一次,因为你需要基于所有的单词循环。在
但我建议另一种方法来完成此任务,您可以使用
itertools.groupby
并使用operator.itemgetter
排序函数:结果:
^{pr2}$我在这里所做的就是使用
sorted
和enumerate
创建一个排序单词列表:然后,我们需要根据第二个元素对这些对进行分组,并获得第一个元素(索引),这样我们将得到以下元组列表:
每个元组都包含那些排序表示相同的单词的索引。在
最后,您只需要根据前面的索引提取主列表中的元素:
1)创建一个函数
anagrams(word)
,它将像您的代码一样返回一个单词的一个anagram列表。2)
map
单词列表上的函数。在相关问题 更多 >
编程相关推荐