我写了一个代码。我希望此代码的工作方式已评论。因此,您可以尝试了解目的(通常是计算元素的平均值)。但是,当我运行函数rainaverage的实际代码时,它显示列表索引超出范围错误,而当我进行一些调整以修复它时,它显示出元组超出范围错误。因此,您的帮助将不胜感激:
'''L1=[(2,3),(4,3),(5,6),(2,5)]
m=L1[0][1]
b=L1[0][0]
n=L1[3][1]
a=(m+n)/2
L1.pop([0][0])
L1.pop([2][0])
L2=(b,a)
L1=list(L1)
L1.append(L2)
L1=tuple(L1)
print(L1)'''
def rainaverage(l):
for i in range(len(l)):
for j in range(len(l)):
if(l[i]==l[j+1]):
m=l[i][1]
n=l[j+1][1]
b=l[0][0]
a=(m+n)/2
l = list(l)
l.pop([i][0])
l.pop([j+1][0])
l2=(b,a)
l.append(l2)
l=tuple(l)
print(l)
l3=[(1,2),(1,3),(2,3),(1,1),(3,8)]
rainaverage(l3)
答案 0 :(得分:0)
最简单的方法是使用字典将第一个值映射到第二个值的列表。然后,您可以分别获取这些列表的平均值
from collections import defaultdict
def rainaverage(l):
d = defaultdict(list)
for a, b in l:
d[a].append(b)
return [(k, sum(v)/len(v)) for k, v in d.items()]
L1=[(2,3),(4,3),(5,6),(2,5)]
print(rainaverage(L1))
# [(2, 4.0), (4, 3.0), (5, 6.0)]
print(rainaverage([(1,2),(1,3),(2,3),(1,1),(3,8)]))
# [(1, 2.0), (2, 3.0), (3, 8.0)]