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.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
Đã trả lời ngày 23 tháng 5 năm 2012 lúc 3:50May 23, 2012 at 3:50
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
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
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
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
2spinlokspinlok
3,49316 Huy hiệu bạc27 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 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]]
06891 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]]
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 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
1