Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)

 更新时间:2020年12月14日 09:52:23   作者:levi  
这篇文章主要介绍了Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母),列表中每个元素相当于一个单词,要实现列表中前一个单词末字母是下一个单词的首字母,并且这个链是最长的。感兴趣的可以了解一下

使用递归实现

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']

工作原理类似于广度优先搜索,因为只要当前值之前没有被调用,get_results函数就会继续遍历整个列表。函数已经查找过的值被添加到_seen列表中,最终停止递归调用流。这个解决方案也会忽略重复的结果,

words = ['giraffe', 'elephant', 'ant', 'ning', 'tiger', 'racoon', 'cat', 'hedgehog', 'mouse',]
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)

输出:

['ant', 'tiger', 'racoon', 'ning', 'giraffe', 'elephant']

到此这篇关于Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)的文章就介绍到这了,更多相关Python 排序最长英文单词链内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python模块常用四种安装方式

    Python模块常用四种安装方式

    这篇文章主要介绍了Python模块常用四种安装方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python简单实现刷新智联简历

    python简单实现刷新智联简历

    本文给大家分享的是个人弄的一个使用Python简单实现刷新智联招聘简历的小工具的代码,非常的简单,给大家参考下吧。
    2016-03-03
  • Django的用户模块与权限系统的示例代码

    Django的用户模块与权限系统的示例代码

    这篇文章主要介绍了Django的用户模块与权限系统的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 使用 Python 清理收藏夹里已失效的网站

    使用 Python 清理收藏夹里已失效的网站

    这篇文章主要介绍了用 Python 清理收藏夹里已失效的网站,本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 详解Python小数据池和代码块缓存机制

    详解Python小数据池和代码块缓存机制

    这篇文章主要介绍了详解Python 小数据池和代码块缓存机制的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • python入门for循环嵌套理解学习

    python入门for循环嵌套理解学习

    这篇文章主要介绍了python入门关于for循环嵌套的理解学习,希望大家可以学会并运用到日常工作中,有需要的朋友可以借鉴参考下,希望能够有帮助
    2021-09-09
  • Python让列表逆序排列的3种方式小结

    Python让列表逆序排列的3种方式小结

    这篇文章主要介绍了Python让列表逆序排列的3种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • django实现将修改好的新模型写入数据库

    django实现将修改好的新模型写入数据库

    这篇文章主要介绍了django实现将修改好的新模型写入数据库,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python中实现列表的逆序、复制与清除的几种常见方法

    Python中实现列表的逆序、复制与清除的几种常见方法

    本文介绍了Python中列表的逆序、复制和清除操作,通过reverse()方法、切片、copy()方法和clear()方法,我们可以轻松地对列表进行这些操作
    2024-12-12
  • Python实现数字小写转大写的示例详解

    Python实现数字小写转大写的示例详解

    这篇文章主要为大家详细介绍了如何利用Python实现数字小写转大写的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-12-12

最新评论