Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Tôi muốn tổng hợp một mảng 2 chiều trong Python:

Đây là những gì tôi có:

def sum1(input):
    sum = 0
    for row in range (len(input)-1):
        for col in range(len(input[0])-1):
            sum = sum + input[row][col]

    return sum


print sum1([[1, 2],[3, 4],[5, 6]])

Nó hiển thị

def sum1(input):
    return sum(map(sum, input))
4 thay vì
def sum1(input):
    return sum(map(sum, input))
5 (1+2+3+4+5+6 = 21). Sai lầm của tôi ở đâu?

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Khi được hỏi ngày 23 tháng 5 năm 2012 lúc 3:43May 23, 2012 at 3:43

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

1

Tôi nghĩ điều này tốt hơn:

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21

Đã trả lời ngày 27 tháng 11 năm 2012 lúc 6:07Nov 27, 2012 at 6:07

3

Bạn có thể viết lại chức năng đó là,

def sum1(input):
    return sum(map(sum, input))

Về cơ bản,

def sum1(input):
    return sum(map(sum, input))
6 sẽ trả lại một danh sách với các tổng trên tất cả các hàng của bạn, sau đó, hầu hết các
def sum1(input):
    return sum(map(sum, input))
7 bên ngoài sẽ thêm danh sách đó.

Example:

>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:58May 23, 2012 at 3:58

Machowmachowmachow

1.0141 Huy hiệu vàng9 Huy hiệu bạc16 Huy hiệu đồng1 gold badge9 silver badges16 bronze badges

1

Đây là một giải pháp thay thế khác

In [1]: a=[[1, 2],[3, 4],[5, 6]]
In [2]: sum([sum(i) for i in a])
Out[2]: 21

Đã trả lời ngày 14 tháng 5 năm 2015 lúc 16:44May 14, 2015 at 16:44

AjayajayAjay

5.0992 Huy hiệu vàng21 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges21 silver badges30 bronze badges

0

Và giải pháp Numpy chỉ là:

import numpy as np
x = np.array([[1, 2],[3, 4],[5, 6]])

Result:

>>> b=np.sum(x)
   print(b)
21

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:50May 23, 2012 at 3:50

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

AkavallakavallAkavall

79.3K49 Huy hiệu vàng203 Huy hiệu bạc246 Huy hiệu Đồng49 gold badges203 silver badges246 bronze badges

3

Tốt hơn hết, hãy quên các bộ đếm chỉ mục và chỉ lặp lại các mục:

def sum1(input):
    my_sum = 0
    for row in input:
        my_sum += sum(row)
    return my_sum

print sum1([[1, 2],[3, 4],[5, 6]])

Một trong những tính năng đẹp (và thành ngữ) của Python là để nó thực hiện việc đếm cho bạn.

def sum1(input):
    return sum(map(sum, input))
8 là một tích hợp và bạn không nên sử dụng tên của các bản tích hợp cho số nhận dạng của riêng bạn.

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:59May 23, 2012 at 3:59

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

MSWMSWmsw

42.1k9 Huy hiệu vàng85 Huy hiệu bạc109 Huy hiệu đồng9 gold badges85 silver badges109 bronze badges

Đây là vấn đề

for row in range (len(input)-1):
    for col in range(len(input[0])-1):

try

for row in range (len(input)):
    for col in range(len(input[0])):

Phạm vi của Python (x) đi từ 0..x-1 rồi

Phạm vi (...) Phạm vi ([Bắt đầu,] Dừng [, Bước]) -> Danh sách các số nguyên

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
0

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:45May 23, 2012 at 3:45

DFBDFBdfb

13.1k1 Huy hiệu vàng29 Huy hiệu bạc52 Huy hiệu đồng1 gold badge29 silver badges52 bronze badges

def sum1(input):
    return sum(map(sum, input))
9 trong Python không bao gồm yếu tố cuối cùng. Nói cách khác,
>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10
0 là [1, 5) hoặc [1, 4]. Vì vậy, bạn chỉ nên sử dụng
>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10
1 để lặp lại trên các hàng/cột.

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
1

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:45May 23, 2012 at 3:45

DFBDFBspinlok

13.1k1 Huy hiệu vàng29 Huy hiệu bạc52 Huy hiệu đồng16 silver badges27 bronze badges

def sum1(input):
    return sum(map(sum, input))
9 trong Python không bao gồm yếu tố cuối cùng. Nói cách khác,
>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10
0 là [1, 5) hoặc [1, 4]. Vì vậy, bạn chỉ nên sử dụng
>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10
1 để lặp lại trên các hàng/cột.

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
2

spinlokspinlok

3,49316 Huy hiệu bạc27 Huy hiệu đồngMay 23, 2012 at 3:46

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Đừng đặt -1 trong phạm vi (LEN (đầu vào) -1) Thay vào đó sử dụng:Kartik Anand

Phạm vi tự động trả về danh sách ít hơn giá trị đối số để không cần đưa ra rõ ràng -15 gold badges40 silver badges72 bronze badges

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
3

Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:46Sep 13, 2018 at 22:49

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Kartik Anandkartik AnandJ F Fitch

4.4175 Huy hiệu vàng40 Huy hiệu bạc72 Huy hiệu đồng1 silver badge3 bronze badges

Đã trả lời ngày 13 tháng 9 năm 2018 lúc 22:49

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
4

J f fitchj f fitch

1161 Huy hiệu bạc3 Huy hiệu đồngApr 1, 2018 at 20:54

1

Câu trả lời nhanh, sử dụng ...

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
5

Trong đó

>>> a=[[1,2],[3,4]]
>>> sum(map(sum, a))
10
2 là tiêu đề mảng của bạn.

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
6

Đã trả lời ngày 1 tháng 4 năm 2018 lúc 20:54Jan 21, 2019 at 14:51

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Trong Python 3.7

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
7

đầu ra

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
8

Đã trả lời ngày 21 tháng 1 năm 2019 lúc 14:51Sep 26, 2019 at 0:14

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Có vẻ như một sự đồng thuận chung là Numpy là một giải pháp phức tạp. So với các thuật toán đơn giản hơn. Nhưng vì lợi ích của câu trả lời có mặt:peyo

Đây dường như là giải pháp ưa thích:3 silver badges14 bronze badges

 >>> x=[[1, 2],[3, 4],[5, 6]]                                                   
>>> sum(sum(x,[]))                                                             
21
9

Đã trả lời ngày 26 tháng 9 năm 2019 lúc 0:14

Peyopeyo1 gold badge8 silver badges23 bronze badges

3393 Huy hiệu bạc14 Huy hiệu ĐồngAug 17, 2021 at 7:57

Sefan

def sum1(input):
    return sum(map(sum, input))
0

6891 Huy hiệu vàng8 Huy hiệu bạc23 Huy hiệu đồng

def sum1(input):
    return sum(map(sum, input))
1

Đã trả lời ngày 17 tháng 8 năm 2021 lúc 7:57

def sum1(input):
    return sum(map(sum, input))
2

So sánh tốc độApr 5 at 10:13

Phương phápFasmo

Kết quả5 bronze badges

1

def sum1(input):
    return sum(map(sum, input))
3

Đã trả lời ngày 5 tháng 4 lúc 10:13

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

Fasmofasmo

Phù hiệu bằng đồng 2158 silver badges20 bronze badges

Bạn đã gặp vấn đề với dấu ngoặc đơn tại lệnh in .... giải pháp này bây giờ sẽ tốt là giải pháp chính xác trong mã Visual StudioAug 8 at 17:12

Hướng dẫn how do you sum a 2d array in python? - làm thế nào để bạn tổng hợp một mảng 2d trong python?

1