Pembahagian Integer dengan Keanggunan dalam Python
Tugas pembahagian integer melibatkan pemecahan nombor tertentu kepada jumlah integer positif, dikenali sebagai bahagian . Contoh biasa ialah membahagikan nombor 4, yang boleh diwakili sebagai 1 1 1 1 atau 1 1 2 atau 2 2.
Penyelesaian Python Elegan
Untuk menangani masalah memerlukan pendekatan yang elegan, fungsi Python bernama partition telah dicadangkan:
def partitions(n, I=1): yield (n,) for i in range(I, n//2 + 1): for p in partitions(n-i, i): yield (i,) + p
Fungsi ini menggunakan rekursi dan menghasilkan semua partition yang mungkin bagi nombor n yang diberikan. Ia bermula dengan membahagi n sebagai bahagian tunggal (sendiri) dan kemudian membahagikan n-i secara rekursif kepada bahagian yang lebih besar daripada atau sama dengan i.
Penilaian Prestasi
Berbanding dengan fungsi yang dicadangkan sebelum ini, penyelesaian ini mempamerkan peningkatan ketara dalam kedua-dua kelajuan dan penggunaan memori:
import timeit n = 20 # Original function def nolen(n): """Original function for integer partitioning.""" # implementation omitted for brevity # Proposed 'partitions' function def partitions(n, I=1): # implementation omitted for brevity # Measure execution time print("Original function (r0): ", timeit.timeit(lambda: r0 = nolen(n), number=100)) print("Proposed function (r1): ", timeit.timeit(lambda: r1 = list(partitions(n)), number=100)) print(f"Partitions are equal: {sorted(map(sorted, r0)) == sorted(map(sorted, r1))}")
Fungsi partition yang dicadangkan adalah lebih kurang 1370 kali lebih pantas daripada yang asal sambil menggunakan memori yang kurang ketara.
Pendekatan Alternatif
Walaupun fungsi partition menyediakan penyelesaian yang berprestasi dan elegan, pilihan lain wujud pada platform seperti ActiveState:
Kesimpulan
Fungsi partition yang dicadangkan menawarkan pendekatan yang cekap dan ringkas untuk pembahagian integer dalam Python. Keanggunan dan kelajuannya menjadikannya alat yang berharga untuk pengaturcara yang mencari gaya pengekodan yang dipertingkatkan.
Atas ialah kandungan terperinci Bagaimanakah kita boleh membahagikan integer secara elegan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!