我們學校有這樣的代碼作為家庭作業。由于學校制作的應用程式,代碼需要在python 2中完成:
撰寫一個函式average(m),它接收一個包含整數項的矩陣作為引數。該函式計算并回傳矩陣中各項的平均值。
下面是給出的代碼:
def test():
l = []
for i in range(random.randint(3,5)):
ll = []
for j in range(random.randint(3,4)):
ll.append(random.randint(1,10))
l.append(ll)
print ("Matrix:",l)
print ("Average of items:", average(l))
test()
print ("")
test()
import random
我試過這樣做:
def average(m):
lst = []
average = sum(lst) / len(lst)
return average
但它回來了:
TypeError: unsupported operand type(s) for /: 'list' and 'int'
我試圖找到使串列加入另一個串列的解決方案,但我一直無法使用網路中提供的幫助。感謝您提供的任何幫助,謝謝。
uj5u.com熱心網友回復:
基本的手動方法是一個嵌套回圈來收集總數和計數:
def average(m):
total = count = 0
for row in m:
for val in row:
count = 1
total = val
return total / count
當然,有一些實用程式可以在更少的行中實作這一點:
def average(m):
return sum(map(sum, m)) / sum(map(len, m))
uj5u.com熱心網友回復:
您可以使用 numpy,因為它適用于 N 維陣列。
Python 內置的平均函式(迄今為止)只能處理一維迭代。
您必須遍歷陣列中的行以對列求和,例如
import random
def test():
l = []
for i in range(random.randint(3, 5)):
ll = []
for j in range(random.randint(3,4)):
ll.append(random.randint(1,10))
l.append(ll)
return l
def average(ll):
s = n = 0
for l in ll:
s = sum(l)
n = len(l)
return s/n
res = test()
print ("Matrix:", res)
print ("Average of items:", average(res))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/357900.html
上一篇:如何根據字母在串列中出現的次數將我的輸出列印為“ ”?
下一篇:用分割值填充串列
