为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

烙印99 2023-12-09 17:19:21
我正在尝试编写这个程序来计算二维列表的周长(基本上将其视为矩形),但我不断收到此错误。我还需要一些帮助来弄清楚如何对“矩形”的列求和而不将角添加两次。提前谢谢你的帮助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 suma2d = [[1,2,3,4],[5,6,7,9],[9, 0, 1,2]] #error occurred hereperimeter_sum(a2d)
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

所以你得到的错误是因为你试图将行(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])


查看完整回答
反对 回复 2023-12-09
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以使用它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

该循环不包括第一行和最后一行,因此您不会两次包含角点。


查看完整回答
反对 回复 2023-12-09
  • 2 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信