如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值?
如何在用户用python提供的2D列表中找到最小值、最大值、总和和平均值 这就是我迄今为止所做的: 我得到以下两个错误:小错误、大错误、总错误、平均错误= list_stats(a)small=a[0][0]索引器错误:列表索引超出范围 未定义函数如何在用户用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
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