我一直在研究一种列元组列表的方法,并找出每个元组的平均值。

myList = [(1,2,3),(4,12,6)]
def GS(myList):
     for miniList in myList:
          r = miniList[0]
          g = miniList[1]
          b = miniList[2]
          GS = round((r+g+b)/3,2)
          miniList = list(miniList)
          miniList[0] = GS
          miniList[1] = GS
          miniList[2] = GS
          miniList = tuple(miniList)
     return myList

 print(GS(myList))

我的名单是[(1,2,3),(4,12,6)]
我应该得到每个元组的平均值,然后替换三个元组
输出:[(2.0,2.0,2.0),(7.33,7.33,7.33)]

最佳答案

你可以使用列表理解下面是一个例子,它避免了通过mapzip迭代器两次计算每个元组的长度。

myList = [(1,2,3),(4,12,6)]

def GS(L):
    lens = map(len, L)
    res = [(sum(i)/i_len,)*i_len for i, i_len in zip(L, lens)]
    return res

print(GS(myList))

[(2.0, 2.0, 2.0), (7.333333333333333, 7.333333333333333, 7.333333333333333)]

如果要舍入小数,可以使用:
res = [(round(sum(i)/i_len, 2),)*i_len for i, i_len in zip(L, lens)]

关于python - Python将修改后的列表带到循环之外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51250881/

10-08 22:09