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 相关文章推荐
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python变量不能以数字打头详解
Jul 06 Python
Python+微信接口实现运维报警
Aug 27 Python
python中模块查找的原理与方法详解
Aug 11 Python
如何实现删除numpy.array中的行或列
May 08 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
django框架中间件原理与用法详解
Dec 10 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
Dec 25 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
PyQt5-QDateEdit的简单使用操作
Jul 12 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 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设计聊天室步步通
2006/10/09 PHP
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
php学习之 数组声明
2011/06/09 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
python求列表交集的方法汇总
2014/11/10 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
安装Python的教程-Windows
2017/07/22 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
应届生自我鉴定
2013/12/11 职场文书
校长就职演讲稿
2014/01/06 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
爱心捐款倡议书
2014/04/14 职场文书
三字经教学反思
2014/04/26 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
2014年工程师工作总结
2014/11/25 职场文书