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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python计算一个序列的平均值的方法
Jul 11 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
初学python的操作难点总结(新手必看篇)
Aug 03 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
对python自动生成接口测试的示例讲解
Nov 30 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
python与字符编码问题
May 24 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
Django 限制访问频率的思路详解
Dec 24 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php获取图片信息的方法详解
2015/12/10 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python中requests小技巧
2017/05/10 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python实现抖音视频批量下载
2018/06/20 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python读取几个G的csv文件方法
2019/01/07 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
python zip()函数使用方法解析
2019/10/31 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
运动会四百米广播稿
2014/01/19 职场文书
销售员岗位职责范本
2014/02/03 职场文书
贷款委托书怎么写
2014/08/02 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书