Python 找出英文单词列表(list)中最长单词链


Posted in Python onDecember 14, 2020

本文主要介绍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 nx
import matplotlib.pyplot as plt
words = ['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 列表最长单词链内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python开发之字符串string操作方法实例详解
Nov 12 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
python支付宝支付示例详解
Aug 22 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python实现批量修改文件名
Mar 23 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
python属于解释型语言么
Jun 15 Python
Python基本数据类型之字符串str
Jul 21 Python
Python进行区间取值案例讲解
Aug 02 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 #Python
Python实现Kerberos用户的增删改查操作
Dec 14 #Python
python-地图可视化组件folium的操作
Dec 14 #Python
python多线程和多进程关系详解
Dec 14 #Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 #Python
pandas将list数据拆分成行或列的实现
Dec 13 #Python
pandas按照列的值排序(某一列或者多列)
Dec 13 #Python
You might like
php $_SERVER当前完整url的写法
2009/11/12 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python3中eval函数用法使用简介
2019/08/02 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python实现数字炸弹游戏程序
2020/07/17 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
Linux的主要特性
2016/09/03 面试题
中文系师范生自荐信
2013/10/01 职场文书
加工操作管理制度
2014/01/19 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
文明寝室申报材料
2014/05/12 职场文书
树转促学习心得体会
2014/09/10 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
公司离职证明范本
2014/10/17 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
关于运动会的广播稿
2015/08/19 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript