Python:列表中字符串元素之间的平均距离

时间:2016-03-14 00:11:12

标签: python

我正在尝试计算字符串列表元素之间的平均距离。所以下面的名字之间的平均距离。

testList = ['sarah', 'jon', 'mark', 'jessica', 'sarah', 'sarah', 'liz',
'jon', 'liz', 'sarah', 'jon', 'mark']

所以Sarah --> Jon[0, 2, 1, 1, 0]。它们之间的平均距离是0.8。

Sarah --> Mark[1, 1, 1]。它们之间的平均距离为1。

我开始为此编写代码,但卡住了。我也是Python的新手,想学习如何使用基本的Python基础知识(如循环)编写此代码,而不是使用库。

def nameDistance(nameOne, NameTwo):
  distance = 0
  distanceList = []
  for name in nameList:
    if name == nameOne or nameTwo:
      #continue parsing through nameList but increment distance by 1 for each name 
      #that is not nameOne or nameTwo
      #once we get to the other name passed in the function
      #append distance to distanceList and set distance back to zero
      #continue to do this for the rest of nameList
      #take the average of distanceList 

1 个答案:

答案 0 :(得分:0)

这是一个完全''vanilla',该方法的任意版本,可以在任何类型的任何列表中使用。

def avgdistance(item1, item2, lst):
    distlist = []
    curr = item1 if (lst.index(item1) < lst.index(item2)) else item2
    index = lst.index(curr)
    for i in range(len(lst)):
        item = lst[i]
        if (item == item1) or (item == item2):
            if item == curr:
                index = i
            else:
                distlist.append(i - index - 1)
                curr = item
                index = i
    if (len(distlist) > 0):
        return sum(distlist)/len(distlist)
    else:
        return 0

这是该方法的通用版本。如果您希望我解释算法的任何部分,请询问。