如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值?

如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值?,python,list,2d,Python,List,2d,如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值 这就是我迄今为止所做的: 我得到以下两个错误:小错误、大错误、总错误、平均错误= list_stats(a)small=a[0][0]索引器错误:列表索引超出范围 未定义函数list\u stats a=[[]]是一个包含空列表的列表a[0][0]是一个不存在的元素。可以先将其展平 a = [[1, 2], [3, 4]] flattened = [num for sublist in a for num in subli

如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值

这就是我迄今为止所做的:

我得到以下两个错误:小错误、大错误、总错误、平均错误= list_stats(a)small=a[0][0]索引器错误:列表索引超出范围

未定义函数
list\u stats


a=[[]]
是一个包含空列表的列表
a[0][0]
是一个不存在的元素。

可以先将其展平

a = [[1, 2], [3, 4]]
flattened = [num for sublist in a for num in sublist]
min_val = min(flattened)
max_val = max(flattened)
sum_val = sum(flattened)
avg_val = sum(flattened) / len(flattened)
因此,在您的情况下:

def list_stats(a):
    flattened = [num for sublist in a for num in sublist]
    min_val = min(flattened)
    max_val = max(flattened)
    sum_val = sum(flattened)
    avg_val = sum_val / len(flattened)
    return min_val, max_val, sum_val, avg_val

#Testing
a = [[1.2,3.5],[5.5,4.2]]
small, large, total, average = list_stats(a)
试试这个:

def list_stats(a):
    total = 0
    counter = 0 
    small = 99999
    large = -999
    for x in a:
        for y in x:
            if y < small: 
                small = y
            if y > large:
                large = y
            counter += 1
            total += y
    average = total / counter
    return small, large, total, average 
def list_stats(a):
总数=0
计数器=0
小=99999
大=-999
对于a中的x:
对于x中的y:
如果y<小:
小=y
如果y>大:
大=y
计数器+=1
总计+=y
平均值=总数/计数器
返回小的、大的、总的、平均的

我更喜欢Eric的答案

我的代码中最上面的部分(我没有包括)是:def list_stats(a),即使您已经包含了代码的函数定义,
a=[[]
在赋值语句
small=a[0][0]之前
仍将导致
索引器出现异常,因为
a
是一个包含空列表的列表,
a[0][0]
引用了一个不存在的元素谢谢!我认为您可以通过将small和large初始化为None或
a
中的第一个数字(如果不是空的话)来改进您的解决方案。这是假设您的列表是有序的,并且没有负数。不,没有。我认为将
large
small
都设置为列表的第一个值,并在找到较大或较小的数字时更新它们,将得到正确的答案。问题是如何获取第一个数字,因为2d列表可能类似于
[[],[1,2]]
。所以我想说,对于这种方法,将
large
small
初始化为
None
,并在for循环中找到第一个值时更新它们,然后在找到下一个值时开始进行比较。当然,当传入的列表没有编号时,还必须定义行为。e、 g.
[[]、[]]
[]
如果您的python足够新,您可以使用
统计信息。意思是说
如果我的答案或任何其他答案解决了您的问题,请将其标记为已接受。谢谢
def list_stats(a):
    total = 0
    counter = 0 
    small = 99999
    large = -999
    for x in a:
        for y in x:
            if y < small: 
                small = y
            if y > large:
                large = y
            counter += 1
            total += y
    average = total / counter
    return small, large, total, average