Python 找出英文單詞列表(list)中最長單詞鏈
本文主要介紹Python中單詞字符串的列表(list),找出列表中所有單詞中前一個單詞首字母和后一個單詞尾字母相同,組成最長的單詞鏈方法代碼,并且每個單詞不能多次使用。
例如:
words = [’giraffe’, ’elephant’, ’ant’, ’tiger’, ’racoon’, ’cat’, ’hedgehog’, ’mouse’]
最長的單詞鏈列表:
[’hedgehog’, ’giraffe’, ’elephant’, ’tiger’, ’racoon’]1、用遞歸方法查找
words = [’giraffe’, ’elephant’, ’ant’, ’tiger’, ’racoon’, ’cat’, ’hedgehog’, ’mouse’]def get_results(_start, _current, _seen): if all(c in _seen for c in words if c[0] == _start[-1]): yield _current else: for i in words: if i[0] == _start[-1]: yield from get_results(i, _current+[i], _seen+[i])new_d = [list(get_results(i, [i], []))[0] for i in words]final_d = max([i for i in new_d if len(i) == len(set(i))], key=len)
輸出結果:
[’hedgehog’, ’giraffe’, ’elephant’, ’tiger’, ’racoon’]
2、使用networkx查找import networkx as nximport matplotlib.pyplot as pltwords = [’giraffe’, ’elephant’, ’ant’, ’tiger’, ’racoon’, ’cat’, ’hedgehog’, ’mouse’]G = nx.DiGraph()G.add_nodes_from(words)for word1 in words: for word2 in words: if word1 != word2 and word1[-1] == word2[0]: G.add_edge(word1, word2)nx.draw_networkx(G)plt.show()print(nx.algorithms.dag.dag_longest_path(G))
到此這篇關于Python 找出英文單詞列表(list)中最長單詞鏈的文章就介紹到這了,更多相關Python 列表最長單詞鏈內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
