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?
Khi được hỏi ngày 23 tháng 5 năm 2012 lúc 3:43May 23, 2012 at 3:43
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
Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:58May 23, 2012 at 3:58
Machowmachowmachow
1.0121 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.0592 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
Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:50May 23, 2012 at 3:50
AkavallakavallAkavall
78.9K48 Huy hiệu vàng200 Huy hiệu bạc245 Huy hiệu Đồng48 gold badges200 silver badges245 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
MSWMSWmsw
42K9 Huy hiệu vàng85 Huy hiệu bạc 109 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
0>>> x=[[1, 2],[3, 4],[5, 6]] >>> sum[sum[x,[]]] 21
Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:45May 23, 2012 at 3:45
DFBDFBdfb
Huy hiệu vàng 13K11 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
Huy hiệu vàng 13K116 silver badges25 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
2spinlokspinlok
3,48316 Huy hiệu bạc25 Huy hiệu đồngMay 23, 2012 at 3:46
Đừ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
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
4J 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
5Trong đó
>>> 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
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
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 badge7 silver badges22 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]]
06911 Huy hiệu vàng7 Huy hiệu bạc22 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]]
2So 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
Fasmofasmo
Phù hiệu bằng đồng 2157 silver badges19 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
1