查找相同长度的字符串中的多样性

时间:2018-10-10 10:23:58

标签: python difference

我想计算listString中的分集。返回的数字应该在0-1之间,其中1表示list population仅由相同的字符串反复填充。

我尝试创建两个函数-一个函数计算所有ascii的平均String值,另一个函数计算一个String相对于所有{其他。

我的字符串的ascii值(小写字母)在97122之间。这就是为什么我每次使用函数-97都减去ord(letter)的原因。我还要除以26,因为它应该是我们可能的字母数。

编辑:使用下面的代码,我得到负数,并且不确定分集是否正确计算。添加abs()可以帮助我解决负数问题,但是我不确定这是推荐的/好的解决方案。

import random

def diversity(testword, population):
    testword_ascii = 0
    testword_letters = list(testword)

    for letter in testword_letters:
        testword_ascii += ord(letter)
        testword_ascii -= 97

    return (testword_ascii/len(testword) - average_ascii(population)) / 26

def average_ascii(population):
    total_ascii = 0

    for i in range(len(population)):
        newlist = list(population[i])
        for letter in newlist:
            total_ascii += ord(letter)
            total_ascii -= 97

    return total_ascii / len(population) / len(newlist)

population = []
for i in range(100):
    created_word = ""
    for i in range(5):
        letter = chr(97 + int(26 * random.random()))
        created_word += letter
    population.append(created_word)

for i in range(len(population)):
    if diversity(population[i], population) < 0.5:
        print ("The diversity of " + population[i] + "is too low! It's: " + str(diversity(population[i], population)))

0 个答案:

没有答案