收到此错误: TypeError: can only concatenate list

我正在尝试编写这个程序来计算二维列表的周长(基本上将其视为矩形),但我不断收到此错误。我还需要一些帮助来弄清楚如何对“矩形”的列求和而不将角添加两次。提前谢谢你的帮助


def perimeter_sum(arr2d):

    col_sum=0

    first_row=arr2d[0]

    last_row=arr2d[-1]

    for i in range(len(arr2d)):

        col_sum=arr2d[1+i][0]+arr2d[1+i][-1]

        sum = first_row + last_row+col_sum

    return sum

a2d = [[1,2,3,4],[5,6,7,9],[9, 0, 1,2]] #error occurred here

perimeter_sum(a2d)


烙印99
浏览 102回答 2
2回答

叮当猫咪

所以你得到的错误是因为你试图将行(first_row和last_row)添加到标量int值(col_sum),因此无法添加连接列表而不是int。要获得二维数组的周长,您可以将最后一行和第一行以及最后一列和第一列相加,然后减去最后的角点,除非有特定原因不能这样做。就像是: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])

梵蒂冈之花

您可以使用它sum()来获取列表的总计。用它来求第一行和最后一行的总和。然后循环遍历中间行并添加第一个和最后一个元素。def perimiter_sum(arr2d):    sum = sum(arr2d[0]) + sum(arr2d[-1])    for row in arr2d[1:-2]:        sum += row[0] + row[-1]    return sum该循环不包括第一行和最后一行,因此您不会两次包含角点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python