我正在尝试计算字符串列表元素之间的平均距离。所以下面的名字之间的平均距离。
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
答案 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
这是该方法的通用版本。如果您希望我解释算法的任何部分,请询问。