2 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
所以你得到的錯(cuò)誤是因?yàn)槟阍噲D將行(first_row和last_row)添加到標(biāo)量int值(col_sum),因此無(wú)法添加連接列表而不是int。
要獲得二維數(shù)組的周長(zhǎng),您可以將最后一行和第一行以及最后一列和第一列相加,然后減去最后的角點(diǎn),除非有特定原因不能這樣做。就像是:
def perimeter_sum(arr2d):
first_row = sum(arr2d[0])
last_row = sum(arr2d[-1])
first_col = sum([arr2d[i][0] for i in range(len(arr2d))])
last_col = sum([arr2d[i][-1] for i in range(len(arr2d))])
# sum with double counted corners
s = sum([first_row, last_row, first_col, last_col])
# decrement once for each corner
return (s - arr2d[0][0] - arr2d[0][-1] - arr2d[-1][0] - arr2d[-1][-1])

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用它sum()來(lái)獲取列表的總計(jì)。用它來(lái)求第一行和最后一行的總和。然后循環(huán)遍歷中間行并添加第一個(gè)和最后一個(gè)元素。
def perimiter_sum(arr2d):
sum = sum(arr2d[0]) + sum(arr2d[-1])
for row in arr2d[1:-2]:
sum += row[0] + row[-1]
return sum
該循環(huán)不包括第一行和最后一行,因此您不會(huì)兩次包含角點(diǎn)。
添加回答
舉報(bào)