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爬虫入门教程之糗百图片爬虫代码分享
Sep 02 Python
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
Python生成随机密码的方法
Jun 16 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
Python面向对象编程基础解析(一)
Oct 26 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
python3连接MySQL数据库实例详解
May 24 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
python求前n个阶乘的和实例
Apr 02 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
python代码实现图书管理系统
Nov 30 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
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
Use Word to Search for Files
2007/06/15 Javascript
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
2017/01/21 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
上课玩手机检讨书
2014/02/08 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
大学生助学金感谢信
2015/01/21 职场文书
公司行政管理制度范本
2015/08/05 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
导游词之无锡唐城
2019/12/12 职场文书
python实现简单聊天功能
2021/07/07 Python
MySQL数据库事务的四大特性
2022/04/20 MySQL