本文介绍了最优雅的方式来生成3字符序列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 大家好, 我希望生成一个'aaa'',''aab'',aac''......'''aba'形式的序列', ''abb'',''abc''等一直到''zzz''。 你会如何构建一个生成器来实现这个目标? 一个简单,有效但不太优雅的解决方案是... alpha = [''a'', ''b'',''c'',''d'']为了简洁而缩短了 alpha2 = [''a'',''b'',''c'' ,''''] alpha3 = ['''',''b'',''c'','d''] def generator(): 表示alpha中的字符: 表示alpha2中的char2: 表示alpha3中的char3: 产生char + char2 + char3 x = generate() x.next()#etc等等, 解决方案 导入字符串 alpha = string.lowercase def生成器(选项,长度): 用于选择: 如果长度> 1: 为g in generator(选项,长度-1): 收益+ g 否则: 为一台发电机(alpha,3)产生一个 : 打印一个 - James Stroud 加州大学洛杉矶分校基因组学和蛋白质组学研究所 专栏951570 洛杉矶,加利福尼亚州90095 http://www.jamesstroud.com/ 触摸效率更高: 导入字符串 alpha = string.lowercase def生成器(选项,长度): 长度 - = 1 用于选择: 如果长度: for g in generator(选项,长度): 产生一个+ g 否则: 产生一个 的in in generator(alpha,3 ): 打印一个 - James Stroud 加州大学洛杉矶分校基因组学研究所和蛋白质组学 Box 951570 洛杉矶,加利福尼亚州90095 http:// w ww.jamesstroud.com/ Hi all,I wish to generate a sequence of the form ''aaa'', ''aab'', aac''.... ''aba'',''abb'', ''abc'' etc. all the way to ''zzz''.How would you construct a generator to acheive this?A simple, working but somewhat inelegant solution is...alpha = [''a'',''b'',''c'',''d''] #shortened for brevityalpha2 = [''a'',''b'',''c'',''d'']alpha3 = [''a'',''b'',''c'',''d'']def generator():for char in alpha:for char2 in alpha2:for char3 in alpha3:yield char + char2 + char3x = generate()x.next() # etc, etc, etc, 解决方案import stringalpha = string.lowercasedef generator(choices, length):for a in choices:if length > 1:for g in generator(choices, length-1):yield a + gelse:yield afor a in generator(alpha, 3):print a--James StroudUCLA-DOE Institute for Genomics and ProteomicsBox 951570Los Angeles, CA 90095 http://www.jamesstroud.com/A touch more efficient:import stringalpha = string.lowercasedef generator(choices, length):length -= 1for a in choices:if length:for g in generator(choices, length):yield a + gelse:yield afor a in generator(alpha, 3):print a--James StroudUCLA-DOE Institute for Genomics and ProteomicsBox 951570Los Angeles, CA 90095 http://www.jamesstroud.com/Basically fine, but you only need one string. E.g.,alpha = "abcd"used three times.Alan Isaac 这篇关于最优雅的方式来生成3字符序列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-20 18:05