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的Flask框架中使用日期和时间的教程
Apr 21 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
python 随机森林算法及其优化详解
Jul 11 Python
python gdal安装与简单使用
Aug 01 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
python计算无向图节点度的实例代码
Nov 22 Python
python topk()函数求最大和最小值实例
Apr 02 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
Python jieba库分词模式实例用法
Jan 13 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
python 批量压缩图片的脚本
Jun 02 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数组循环操作详细介绍 附实例代码
2013/02/03 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
javascript Keycode对照表
2009/10/24 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
小程序input数据双向绑定实现方法
2019/10/17 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
python实现两个文件合并功能
2018/04/01 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python sys模块常用方法解析
2020/02/20 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
EJB的激活机制
2013/10/25 面试题
高中英语教学反思
2014/02/04 职场文书
小学生暑假感言
2014/02/06 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
三峡人家导游词
2015/01/31 职场文书
《刷子李》教学反思
2016/02/20 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
Vue的生命周期一起来看看
2022/02/24 Vue.js