数组对角线的总和

时间:2015-11-02 00:59:09

标签: python arrays python-3.x sum

我对此非常陌生并且必须为项目执行此操作,因此请牢记这一点。

我需要编写一个函数class StoreSpider (CrawlSpider): name = "storyder" allowed_domains = ["example.com"] start_urls = ["http://www.example.com/"] #start_urls = ["http://www.example.com/books.php", "http://www.example.com/movies.php"] rules = ( Rule(LinkExtractor(), follow=True, callback='parse_category'), Rule(LinkExtractor(), follow=False, callback="parse_item"), ) def parse_category(self, response): category = StoreCategory() # some code for determining whether the current page is a category, or just another stuff if is a category: category['name'] = name category['url'] = response.url return category def parse_item(self, response): item = StoreItem() # some code for extracting the item's data return item ,它有一个list类型的参数。

该列表是一个4x4二维整数数组(4行和4列整数)。

该函数必须返回从右上角到左下角的对角线位置的整数之和。

我没有尝试任何东西,因为我不知道从哪里开始,所以会很感激一些指导。

1 个答案:

答案 0 :(得分:2)

由于您还没有指定语言(这可能是课堂作业),我必须提供伪代码。给定4x4 2d数组,基本思想是使用指定索引的循环,并使用该索引在两个维度中获取正确的元素。假设我们有阵列:

           [][0]  [][1]  [][2]  [][3]
           -----  -----  -----  -----
[0][]          1      2      3      4
[1][]          5      6      7      8
[2][]          9     10     11     12
[3][]         13     14     15     16

我们希望将左上角到右下角(1+6+11+16(1)相加。那将是这样的:

def sumOfDiagonal (arr, sz):
    sum = 0
    for i = 0 to sz - 1 inclusive:
        sum = sum + arr[i][i]
    return sum

使用正常的方式访问数组。如果问题中的含糊不清,你的数组实际一些描述的列表(例如16个元素的链表),你只需要调整你的方式得到"数组"元件。

例如,16个元素的列表需要获取节点0,5,10和15,这样您就可以在每次累积后跳过四个节点的列表。

举例来说,这里有一些Python代码(2)用于执行左上角到右下角的变体,它按预期输出34 (1+6+11+16)

def sumOfDiagonals(arr):
    sum = 0
    for i in range(len(arr)):
        sum += arr[i][i]
    return sum

print(sumOfDiagonals([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]))

(1)要做到右上角到左下角,只需要将第二个术语更改为sz - i - 1

(2)当您希望能够测试伪代码时,Python是理想的伪代码语言,只要您远离其更复杂的角落: - )