我有一个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)
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)
| 归档时间: |
|
| 查看次数: |
28 次 |
| 最近记录: |