首页 / PYTHON / 通过Python查找和分组字谜
通过Python查找和分组字谜
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过Python查找和分组字谜,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1534字,纯文字阅读大概需要3分钟。
内容图文
input: ['abc', 'cab', 'cafe', 'face', 'goo']
output: [['abc', 'cab'], ['cafe', 'face'], ['goo']]
问题很简单:它由字谜组成.订单无关紧要.
当然,我可以通过C(这是我的母语)来做到这一点.但是,我想知道这可以通过Python在一行中完成.编辑:如果不可能,可能是2或3行.我是Python的新手.
为了检查两个字符串是否是字谜,我使用了排序.
>>> input = ['abc', 'cab', 'cafe', 'face', 'goo']
>>> input2 = [''.join(sorted(x)) for x in input]
>>> input2
['abc', 'abc', 'acef', 'acef', 'goo']
我认为通过组合地图可能是可行的.但是,我需要使用dict作为哈希表.我还不知道这是否可以在一行中完成.任何提示都会被贬低!
解决方法:
可读的单线解决方案:
output = [list(group) for key,group in groupby(sorted(words,key=sorted),sorted)]
例如:
>>> words = ['abc', 'cab', 'cafe', 'goo', 'face']
>>> from itertools import groupby
>>> [list(group) for key,group in groupby(sorted(words,key=sorted),sorted)]
[['abc', 'cab'], ['cafe', 'face'], ['goo']]
这里的关键是使用itertools.groupby from the itertools module将列表中的项目组合在一起.
我们提供给groupby的列表必须先进行排序,因此我们将其排序(单词,键=已排序).这里的技巧是sort可以接受一个键函数,并根据这个函数的输出进行排序,所以我们再次将sort作为键函数进行排序,这将按顺序使用字符串的字母对单词进行排序.没有必要定义我们自己的函数或创建lambda.
groupby采用一个关键函数,它用于判断项目是否应该组合在一起,我们可以再次将内置的排序函数传递给它.
最后要注意的是输出是键对和组对象的对,所以我们只需要使用grouper对象并使用list函数将它们中的每一个转换为列表.
(顺便说一句 – 我不会把你的变量输入称为隐藏the built-in input function,尽管它可能不是你应该使用的那个.)
内容总结
以上是互联网集市为您收集整理的通过Python查找和分组字谜全部内容,希望文章能够帮你解决通过Python查找和分组字谜所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。