Mảng tổng Python theo chỉ mục

Nếu bỏ chỉ số start thì được coi là 0, nếu bỏ chỉ số stop thì lát cắt về cuối mảng

Các chỉ mục Python dựa trên số không, vì vậy mục đầu tiên trong một mảng có chỉ mục là 0 và mục cuối cùng có chỉ mục là -1 hoặc sum[]0

Ví dụ đầu tiên trả về tổng của 3 phần tử mảng đầu tiên

Slice sum[]1 trả về một mảng chứa 3 phần tử đầu tiên của mảng ban đầu [các chỉ số 0, sum[]3 và sum[]4]

Bước cuối cùng là gọi phương thức sum[] trên lát mảng

các numpy. phương thức sum trả về tổng của các phần tử trong mảng

Bạn cũng có thể sử dụng hàm sum[] gốc của Python, nhưng nó chậm hơn một chút so với phương thức sum[]7

Mẫu mã sau đây trả về tổng của N phần tử mảng cuối cùng

Slice sum[]8 trả về một mảng chứa 2 phần tử cuối cùng của mảng ban đầu

Dưới đây là một ví dụ trả về tổng của các phần tử mảng tại các chỉ số sum[]4, 050 và 051

Lưu ý rằng chỉ mục stop là loại trừ [tối đa nhưng không bao gồm], vì vậy lát cắt 053 bắt đầu từ chỉ mục sum[]4 và đi lên nhưng không bao gồm chỉ mục 055

Bạn cũng có thể sử dụng vòng lặp 056 để tính toán 057 nếu bạn không muốn sử dụng phương pháp sum[]7

Còn được gọi là chỉ số mảng cân bằng hoặc chỉ số cân bằng của mảng, đây là một vấn đề đơn giản và thú vị cho người mới bắt đầu. Lần đầu tiên tôi bắt gặp nó trên Codewars [6 kyu] và thật thú vị khi tìm ra nó

Vấn đề

Đối với bất kỳ ai chưa gặp phải vấn đề này, nó sẽ như thế này. Bạn được cung cấp một mảng và được yêu cầu tạo một hàm tìm chỉ số tại đó tổng các số nguyên ở vế trái bằng tổng các số nguyên ở vế phải. Nếu không có số như vậy, hàm của bạn sẽ trả về kết quả đầu ra là -1

Đầu tiên, chúng tôi sẽ phân tích vấn đề trước khi thử giải pháp. Tôi thích viết từng bước bằng tiếng Anh đơn giản để có thể theo dõi xem bước nào hợp lý và bước nào không

Phân tích vấn đề

Giả sử chúng ta được cung cấp mảng sau. [1,2,3,4,5,6,5,4,3,2,1] làm đầu vào và được yêu cầu tạo một hàm trả về chỉ số tối thiểu mà tại đó bên trái cân bằng bên phải

Nhìn vào mảng của chúng ta, chúng ta có thể dễ dàng biết rằng đầu ra của chúng ta phải là 5, chỉ số đại diện cho số nguyên '6' [hãy nhớ rằng lập chỉ mục Python bắt đầu từ 0]. Điều đó đã đủ dễ nhưng nếu chúng ta được cung cấp một mảng dài hơn hoặc một mảng có số lớn hơn thì sao?

Đầu tiên, từ vấn đề của chúng tôi, chúng tôi biết hai điều

  1. Từ phía bên trái của mảng, chúng ta sẽ phải di chuyển dọc theo toàn bộ chiều dài của mảng, kiểm tra từng chữ số cho đến khi tìm thấy chữ số ở điểm giữa
  2. Điều này có nghĩa là lấy tổng tăng dần của các số và kiểm tra xem bên trái có bằng bên phải không. Ví dụ, trong mảng của chúng ta, chúng ta sẽ lấy tổng của 0 và 1, so sánh nó với tổng các số ở bên phải của 1, so sánh tổng của 1 và 2 với tổng các số ở bên phải của 2
Giải pháp

Từ các bước đã viết, rõ ràng là chúng ta cần một vòng lặp for để lặp qua toàn bộ chiều dài của mảng. Chúng tôi sẽ sử dụng phương pháp cắt chỉ mục trong các bước sau

  1. Xác định chức năng
  2. Tạo một vòng lặp for để lặp qua mảng
  3. Viết câu lệnh if so sánh các vị trí chỉ mục trước mỗi chỉ mục mà chúng ta phân tích và các vị trí chỉ mục sau nó và trả về vị trí chỉ mục nếu cả hai bằng nhau
  4. Trả về -1 trong vòng lặp for của chúng ta nếu không có chỉ mục nào trong mảng mà cả hai bên trái và phải của nó đều bằng nhau
  5. Kiểm tra chức năng của chúng tôi. Đầu tiên, chúng tôi xác định hàm find_midpoint_index nhận đối số 'arr'

Tiếp theo, chúng tôi đặt vòng lặp for của mình để lặp qua toàn bộ chiều dài của mảng

Bây giờ, chúng ta cần một cách để yêu cầu máy tính so sánh tổng của hai bên trái và phải khi nó di chuyển dọc theo mảng

Nói một cách đơn giản, biểu thức trên chỉ đơn giản có nghĩa là chương trình sẽ kiểm tra số ở mỗi vị trí chỉ mục [i]. Nếu tổng của tất cả các số trước vị trí chỉ mục mà nó hiện đang kiểm tra bằng tổng của các số sau nó, thì nó sẽ trả về chỉ mục đó làm đầu ra. Lưu ý rằng chúng tôi không trả lại số nguyên, chỉ trả về vị trí chỉ mục mà nó chiếm

Bây giờ chúng ta hãy nhìn vào toàn bộ điều

Chúng tôi trả về -1 làm đầu ra nếu điều kiện trong vòng lặp for của chúng tôi không có cơ hội thực thi

Chúng ta có thể sử dụng chỉ mục trong mảng trong Python không?

Lập chỉ mục mảng cũng giống như truy cập phần tử mảng. Bạn có thể truy cập một phần tử mảng bằng cách tham khảo số chỉ mục của nó . Các chỉ mục trong mảng NumPy bắt đầu bằng 0, nghĩa là phần tử đầu tiên có chỉ số 0 và phần tử thứ hai có chỉ số 1, v.v.

Làm cách nào để tính tổng hai mảng trong NumPy?

Để cộng hai mảng lại với nhau, chúng ta sẽ sử dụng numpy. thêm phương thức[arr1,arr2] . Để sử dụng phương pháp này, bạn phải đảm bảo rằng hai mảng có cùng độ dài. Nếu độ dài của hai mảng không giống nhau, thì hãy quảng bá kích thước của mảng ngắn hơn bằng cách thêm số 0 vào các chỉ mục bổ sung.

Chủ Đề