บทนำ
โปรแกรมคำนวณกำลังของเลขฐาน n ตั้งแต่ n^0 ถึง n^(k-1) รวม k ค่า ใช้ list comprehension ร่วมกับตัวดำเนินการ **
ตัวอย่างโค้ด
n = 4
k = 5
print(f"ฐาน n = {n}")
print(f"จำนวนกำลัง k = {k}")
# List comprehension: n ** i สำหรับ i = 0 ถึง k-1
result = [n ** i for i in range(k)]
print(f"กำลังของ {n} ตั้งแต่ 0 ถึง {k-1}: {result}")
ผลลัพธ์
ฐาน n = 4
จำนวนกำลัง k = 5
กำลังของ 4 ตั้งแต่ 0 ถึง 4: [1, 4, 16, 64, 256]
คำอธิบาย
i=0: 4**0 = 1
i=1: 4**1 = 4
i=2: 4**2 = 16
i=3: 4**3 = 64
i=4: 4**4 = 256
ฟังก์ชันครบถ้วน
def powers_of_n(n, k, start=0):
"""คืนลิสต์กำลังของ n: n^start, n^(start+1), ..., n^(start+k-1)"""
return [n ** i for i in range(start, start + k)]
def powers_of_n_generator(n, k, start=0):
"""Generator version - ประหยัดหน่วยความจำ"""
for i in range(start, start + k):
yield n ** i
# ทดสอบ
print(powers_of_n(2, 10)) # [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
print(powers_of_n(3, 5, start=2)) # [9, 27, 81, 243, 729] (3^2 ถึง 3^6)
# Generator usage
for i, val in enumerate(powers_of_n_generator(2, 20)):
print(f"2^{i} = {val}")
if i >= 5: break
กรณีพิเศษและข้อควรระวัง
- n = 0: 0^0 = 1 (ใน Python), 0^k = 0 สำหรับ k>0
- n = 1: ทุกค่า = 1
- n < 0: สลับเครื่องหมาย (+/-) ตามคี่/คู่ของ exponent
- k ใหญ่: ผลลัพธ์อาจใหญ่เกิน Python int (แต่ Python รองรับ arbitrary precision)
- float n: ผลลัพธ์เป็น float
การประยุกต์: Geometric Sequence
def geometric_sequence(a, r, n):
"""ลำดับเรขาคณิต: a, ar, ar^2, ..., ar^(n-1)"""
return [a * (r ** i) for i in range(n)]
print(geometric_sequence(3, 2, 5)) # [3, 6, 12, 24, 48]
สรุป
ใช้ list comprehension [n ** i for i in range(k)] คำนวณกำลัง K ระดับแรกของ N ได้อย่างกระชับและมีประสิทธิภาพ Python รองรับ big integers อัตโนมัติ ไม่ต้องกังวล overflow