我有一个 list 如下:

[
  [0, 5, -3, 5, 0, 0],
  [-3, 0, 1, 0, 5, 0],
  [1, 0, 5, 0, -5, 0],
  [-3, 0, 3, 0, 0, 5]
]

我需要计算共享相同索引的元素的总和和平均值,然后结果将添加到新的列表中.例如,这些内部列表的索引为0的项目将被加在一起:

0 + (-3) + 1 + (-3) = -5

然后,总和将除以平均数(不包括0):

average = -5/3 = -1.66666667

最后,它将被添加到新的列表中.

我以为结果会是这样的

[
  -1.66667,
  5.0,
  1.5,
  5.0,
  0.0,
  5
]

我试过这个:

for i in range(0, len(rating_values)):
    for j in range(0, len(rating_values[i])):
        total = 0
        count = 0
        if rating_values[i][j] != 0:
            total += rating_values[i][j]
            count += 1
        average_rating = total / count if count > 0 else 0
        average_list.append(average_rating)

但我得到了这个

[0, 5.0, -3.0, 5.0, 0, 0, -3.0, 0, 1.0, 0, 5.0, 0, 1.0, 0, 5.0, 0, -5.0, 0, -3.0, 0, 3.0, 0, 0, 5.0]

有没有一种方法可以让我只在Python语言中循环访问相同索引的项(对于那些内部列表)?

推荐答案

只要稍微修改一下,你就可以实现它.你应该先遍历列.然后,遍历每一列的行.正如我所看到的,您还将sum和count变量放置在内部循环中,这使得它们随每行重置,并在内部循环中附加平均值,从而导致每个索引有多个条目.

rating_values = [[0, 5, -3, 5, 0, 0], [-3, 0, 1, 0, 5, 0], [1, 0, 5, 0, -5, 0], [-3, 0, 3, 0, 0, 5]]
average_list = []

# Loop through each index
for j in range(len(rating_values[0])):  # Assumes all sublists are of equal length
    total = 0
    count = 0
    # Loop through each list for the current index
    for i in range(len(rating_values)):
        if rating_values[i][j] != 0:
            total += rating_values[i][j]
            count += 1
    # Compute the average; if count is 0, average is set to 0
    average_rating = total / count if count > 0 else 0
    average_list.append(round(average_rating, 5))  # rounding to 5 decimal places

print(average_list)

Python相关问答推荐

通过优化空间在Python中的饼图中添加标签

Pandas 第二小值有条件

滚动和,句号来自Pandas列

对于一个给定的数字,找出一个整数的最小和最大可能的和

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

如何获取numpy数组的特定索引值?

计算每个IP的平均值

删除marplotlib条形图上的底边

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

如何在Pyplot表中舍入值

搜索按钮不工作,Python tkinter

使用Python异步地持久跟踪用户输入

如何使用Azure Function将xlsb转换为xlsx?

如何在PythonPandas 中对同一个浮动列进行逐行划分?

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

read_csv分隔符正在创建无关的空列

pytest、xdist和共享生成的文件依赖项

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名

从`end_date`回溯,如何计算以极为单位的滚动统计量?