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 拆包可迭代数据如tuple, list
Dec 29 Python
python3下实现搜狗AI API的代码示例
Apr 10 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
linux下python中文乱码解决方案详解
Aug 28 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
用Python将库打包发布到pypi
Apr 13 Python
pytorch中的model.eval()和BN层的使用
May 22 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学习之数据类型之间的转换代码
2011/05/29 PHP
浅析PHP Socket技术
2013/08/02 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
phalcon框架使用指南
2016/02/23 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
文员岗位职责
2013/11/09 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
作风建设剖析材料
2014/10/06 职场文书
助学金感谢信
2015/01/20 职场文书
人事专员岗位职责
2015/02/03 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2019年思想汇报
2019/06/20 职场文书
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python