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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
基于Python os模块常用命令介绍
Nov 03 Python
Python实现的凯撒密码算法示例
Apr 12 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
解决Python一行输出不显示的问题
Dec 03 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
pymongo中聚合查询的使用方法
Mar 22 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 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使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
javascript事件模型代码
2007/07/01 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
在django中自定义字段Field详解
2019/12/03 Python
Python pymsql模块的使用
2020/09/07 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
为什么要做架构设计
2015/07/08 面试题
初中生学习生活的自我评价
2013/11/20 职场文书
幼儿发展评估方案
2014/06/11 职场文书
课内比教学心得体会
2014/09/09 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
学校会议通知范文
2015/04/15 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
Python一行代码实现自动发邮件功能
2021/05/30 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript