Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Mảng tiền tố (Prefix sum array) trong Python dùng accumulate


Cho một mảng, ta phải tạo mảng tiền tố (prefix sum) bằng hàm accumulate. itertools.accumulate(iterable[, func]) trả về iterator. Chúng chỉ nên được truy cập bằng các hàm hoặc vòng lặp cắt ngắn luồng. Tạo iterator trả về tổng tích lũy. Các phần tử có thể là bất kỳ kiểu có thể cộng được bao gồm Decimal hoặc Fraction. Nếu đối số hàm tùy chọn được cung cấp, nó phải là hàm hai tham số và sẽ được dùng thay vì phép cộng.

Ví dụ

Input Data = [1, 0, 2, 3, 5]
>>> list(accumulate(data)) # running summation
Output [1, 1, 3, 6, 11]

Thuật toán

Bước 1: Tạo list.
Bước 2: Dùng list(accumulate()) hàm, nó trả về running total.
Bước 3: Hiển thị tổng.

Ví dụ mã

# Chương trình Python in mảng tiền tố dùng accumulate
from itertools import accumulate

def summation(A):
    print("The List after Summation ::>", list(accumulate(A)))

# Driver program
if __name__ == "__main__":
    A = list()
    n = int(input("Enter the size of the First List ::"))
    print("Enter the Element of First List ::")
    for i in range(int(n)):
        k = int(input(""))
        A.append(k)
    summation(A)

Kết quả

Enter the size of the First List ::5
Enter the Element of First List ::
1
2
3
4
5
The List after Summation ::> [1, 3, 6, 10, 15]