在3D列表python中平均元素

Ash*_*h K -4 python

我有一个3D列表,例如-

[
[[ 'A', 'B', 4], [ 'A', 'B', 6], [ 'A', 'B', 5], [ 'A', 'B', 7]],
[[ 'C', 'D', 5], [ 'C', 'D', 3], [ 'C', 'D', 2]],
[[ 'E', 'F', 4], [ 'E', 'F', 7], [ 'E', 'F', 3], [ 'E', 'F', 9], [ 'E', 'F', 11]]
....
..
]
Run Code Online (Sandbox Code Playgroud)

我需要计算3rd element每个的平均值,2D list并将其作为元素添加到列表本身中。

尝试过itertools其他技术来爬取列表,但未能获取每个元素的数量以2D list进行平均计算。

列表的预期输出-

[
[[ 'A', 'B', 4], [ 'A', 'B', 6], [ 'A', 'B', 5], [ 'A', 'B', 7], [ 'A', 'B', 5.5]],
[[ 'C', 'D', 5], [ 'C', 'D', 3], [ 'C', 'D', 2], [ 'C', 'D', 3.3]],
[[ 'E', 'F', 4], [ 'E', 'F', 7], [ 'E', 'F', 3], [ 'E', 'F', 9], [ 'E', 'F', 11], [ 'E', 'F', 6.8]]
....
..
]
Run Code Online (Sandbox Code Playgroud)

我试过了 -

for eachReading in list_final:
    avg = sum(eachReading[0], eachReading[len(list_final - 1)]) / len(list_final)
    eachReading.append(eachReading[0], eachReading[1], avg)
Run Code Online (Sandbox Code Playgroud)

Dee*_*ace 5

itertools绝对是一个过大的杀伤力。使用一个简单的循环(对不起的变量名称很抱歉):

li = [
      [['A', 'B', 4], ['A', 'B', 6], ['A', 'B', 5], ['A', 'B', 7]],
      [['C', 'D', 5], ['C', 'D', 3], ['C', 'D', 2]],
      [['E', 'F', 4], ['E', 'F', 7], ['E', 'F', 3], ['E', 'F', 9], ['E', 'F', 11]]
     ]

for inner_list in li:
    avg = sum(inner_inner[-1] for inner_inner in inner_list) / len(inner_list)
    inner_list.append([inner_list[0][0], inner_list[0][1], round(avg, 2)])  # round to
                                                                            # however many
                                                                            # digits you want

print(li)
Run Code Online (Sandbox Code Playgroud)

产出

[[['A', 'B', 4], ['A', 'B', 6], ['A', 'B', 5], ['A', 'B', 7], ['A', 'B', 5.5]],
 [['C', 'D', 5], ['C', 'D', 3], ['C', 'D', 2], ['C', 'D', 3.33]],
 [['E', 'F', 4],
  ['E', 'F', 7],
  ['E', 'F', 3],
  ['E', 'F', 9],
  ['E', 'F', 11],
  ['E', 'F', 6.8]]]
Run Code Online (Sandbox Code Playgroud)