Python:使用一系列字符查找所有可能的单词组合(分词)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:使用一系列字符查找所有可能的单词组合(分词),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1215字,纯文字阅读大概需要2分钟。
内容图文
![Python:使用一系列字符查找所有可能的单词组合(分词)](/upload/InfoBanner/zyjiaocheng/750/72edc6bdaa354d08a1c447d3bd8d5ad2.jpg)
我正在做一些像下面这样的分词实验.
lst是一系列字符,输出是所有可能的单词.
lst = ['a', 'b', 'c', 'd']
def foo(lst):
...
return output
output = [['a', 'b', 'c', 'd'],
['ab', 'c', 'd'],
['a', 'bc', 'd'],
['a', 'b', 'cd'],
['ab', 'cd'],
['abc', 'd'],
['a', 'bcd'],
['abcd']]
我已经检查了itertools库中的组合和排列,
并尝试了combinatorics.
然而,似乎我在看错了,因为这不是纯粹的排列和组合……
似乎我可以通过使用大量循环来实现这一点,但效率可能很低.
编辑
单词顺序很重要,因此[‘ba’,’dc’]或[‘cd’,’ab’]等组合无效.
订单应始终从左到右.
编辑
@Stuart的解决方案在Python 2.7.6中不起作用
编辑
@Stuart的解决方案在Python 2.7.6中有效,请参阅下面的注释.
解决方法:
itertools.product应该能够帮助你.
这个想法是这样的: –
考虑由板块分隔的A1,A2,…,AN.将有N-1板.
如果有平板,则存在分段.如果没有平板,则有连接.
因此,对于给定的长度为N的序列,您应该具有2 ^(N-1)个这样的组合.
就像下面这样
import itertools
lst = ['a', 'b', 'c', 'd']
combinatorics = itertools.product([True, False], repeat=len(lst) - 1)
solution = []
for combination in combinatorics:
i = 0
one_such_combination = [lst[i]]
for slab in combination:
i += 1
if not slab: # there is a join
one_such_combination[-1] += lst[i]
else:
one_such_combination += [lst[i]]
solution.append(one_such_combination)
print solution
内容总结
以上是互联网集市为您收集整理的Python:使用一系列字符查找所有可能的单词组合(分词)全部内容,希望文章能够帮你解决Python:使用一系列字符查找所有可能的单词组合(分词)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。