python – 生成字符串的组合(不是排列)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 生成字符串的组合(不是排列),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含994字,纯文字阅读大概需要2分钟。
内容图文
![python – 生成字符串的组合(不是排列)](/upload/InfoBanner/zyjiaocheng/815/b31657b64a384e51b776cc7a4ab047ad.jpg)
我已经尝试在Python中的“Programming Interviews Exposed”中实现该算法,如下所示,但它似乎不起作用(第2版第99页):
这个想法是生成一个字符串的所有组合(而不是排列),这样如果你输入“wxyz”,你会得到“w,wx,wxy,wxyz,wxz,wy,wyz,wz ….”等等.显示wz然后zw无效.
def doCombine(strng, out, length, level, start):
for i in range(start, length):
out.append(strng[i])
print out
if (i < length - 1):
doCombine(strng, out, length, level +1, i + 1)
out = out[:-1]
x = list()
target = "wxyz"
print doCombine(target, x, len(target), 0, 0)
这可能有什么不妥之处?我得到相对垃圾输出.
解决方法:
在当前代码中,尝试将行out = out [: – 1]更改为del out [-1].这两个都导致删除了最后一项,但在当前代码中重新分配而不是使用相同的列表.这导致字符永远不会从原始列表中删除,这显然会使输出显着混乱.
进行更改后,输出如下:
>>> print doCombine(target, x, len(target), 0, 0)
['w']
['w', 'x']
['w', 'x', 'y']
['w', 'x', 'y', 'z']
['w', 'x', 'z']
['w', 'y']
['w', 'y', 'z']
['w', 'z']
['x']
['x', 'y']
['x', 'y', 'z']
['x', 'z']
['y']
['y', 'z']
['z']
None
内容总结
以上是互联网集市为您收集整理的python – 生成字符串的组合(不是排列)全部内容,希望文章能够帮你解决python – 生成字符串的组合(不是排列)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。