繁体   English   中英

在Python 3中读取遗传算法代码

[英]Reading Genetic Algorithm Code in Python 3

我正在研究Clinton Sheppard撰写的“ Python的遗传算法”一文,并努力学习Python 3。

我希望有人能帮助我正确解释一些Python 3代码。 我的意思是,代码可以正常工作-它可以完成预期的工作-但我需要了解为什么的帮助。 这是第一段代码:

随机导入

geneSet = " abcdef....zA...Z!."
target = "Hello World!"
def generate_parent(length):
    genes = []
    while len(genes) < length:  # limited to length number of iterations
    sampleSize = min(length - len(genes), len(geneSet))
    print("Current sample size: {}".format(sampleSize))
    print(genes.extend(random.sample(geneSet, sampleSize)))

return ''.join(genes)

基本上,这里使用此方法从基因集生成随机字符串。 我看到它作为输入参数的长度。 我假设length =12。首先,创建一个空列表基因。 然后while循环(仅限于长度迭代)通过取(length-len(genes)and len(geneSet)的最小值来获得sampleSize。使用12作为长度,得出min(12-0,54)结果是12。从geneSet采样了sampleSize(12)的随机样本,并由此扩展了基因列表。

我很难看到需要最后一行代码“ return ..join(genes)”。 或者说while循环经历了不止一次迭代,因为在第二到最后一行代码中,基因列表是通过sampleSize从geneSet扩展的。

....这只是一个世界:)我认为,通常情况下,我忽略了显而易见的问题,但是如果有人可以花一些时间用自己的话来解释此代码,我将不胜感激。不同的角度。

谢谢!

"".join(genes) ist用于将基因列表的所有单个条目组合为一个字符串。 str.join(sequence)接受str.join(sequence)所有条目并将它们分隔为str 由于作者只需要一个仅由基因组成的字符串,因此将""用作str因此字符串中的单个字符之间没有任何分隔。

使用while循环(如jasonharper所述)用于创建长度大于gene_set的字符串,因为random.sample()只能选择与要采样的元素一样多的采样。

我目前正在写同一本书,也许我们可以互相帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM