Python range() ฟังก์ชั่น: Float, List, For loop ตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Python range() เป็นฟังก์ชันในตัวที่สร้างลำดับจำนวนเต็มที่ไม่สามารถเปลี่ยนแปลงได้ โดยเริ่มจากค่าเริ่มต้นไปจนถึงค่าสิ้นสุด แต่ไม่รวมค่าสิ้นสุด โดยใช้ขั้นตอนเสริมเพื่อควบคุมการเพิ่มขึ้น

ความหมายของ Python พิสัย?
Python range() เป็นฟังก์ชันในตัวที่ใช้ได้กับ Python จาก Python (3.x) และจะแสดงลำดับตัวเลขตามดัชนีเริ่มต้นและดัชนีหยุดที่กำหนดไว้ ในกรณีที่ไม่ได้ระบุดัชนีเริ่มต้น ดัชนีจะถือเป็น 0 และจะเพิ่มค่าทีละ 1 จนถึงดัชนีหยุด
ตัวอย่างเช่น range(5) จะแสดงค่า 0, 1, 2, 3, 4 ออกมา Python `range()` เป็นคำสั่งที่มีประโยชน์มากและส่วนใหญ่ใช้เมื่อคุณต้องวนซ้ำโดยใช้ `range` สำหรับห่วง.
วากยสัมพันธ์
ไวยากรณ์ของฟังก์ชัน range() แสดงอยู่ด้านล่าง:
range(start, stop, step)
พารามิเตอร์
- เริ่มต้น: (ทางเลือก) ดัชนีเริ่มต้นเป็นจำนวนเต็ม และหากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 0
- หยุด: ดัชนีหยุด (stop index) กำหนดค่าที่ฟังก์ชันช่วงจะต้องหยุดทำงาน เป็นค่าที่ต้องป้อนให้กับฟังก์ชันช่วงเสมอ ค่าสุดท้ายจะน้อยกว่าค่าหยุดอยู่ 1 เสมอ
- ขั้นตอน: (ไม่บังคับ) ค่าขั้นตอนคือจำนวนที่ต้องเพิ่มขึ้นจากจำนวนถัดไปในช่วง โดยค่าเริ่มต้นคือ 1
ส่งคืนค่า
ค่าส่งคืนเป็นลำดับตัวเลขจากดัชนีเริ่มต้นถึงหยุดที่กำหนด
Python range() ฟังก์ชั่นและประวัติ
Python range() ได้รับการแนะนำจาก Python เวอร์ชัน 3; ก่อนหน้านั้น ฟังก์ชันคือ xrange()
ฟังก์ชัน range() และ xrange() ทั้งสองฟังก์ชันใช้ในการสร้างลำดับตัวเลข
ต่อไปนี้คือความแตกต่างระหว่าง range() และ xrange():
| พิสัย() | เอ็กซ์เรนจ์() |
|---|---|
| range() จะให้ลำดับของตัวเลขและส่งคืนรายการของตัวเลข | ฟังก์ชัน xrange() จะมอบวัตถุตัวสร้างที่ต้องวนซ้ำในฟังก์ชัน for-loop เพื่อรับค่า |
| range() ส่งคืนรายการ | xrange() ส่งคืนวัตถุตัวสร้าง |
| เมธอด range() ใช้หน่วยความจำมากขึ้นเนื่องจากรายการที่ส่งคืนต้องถูกจัดเก็บเมื่อเปรียบเทียบกับ xrange() | เนื่องจาก xrange() ส่งคืนอ็อบเจ็กต์ generator จึงไม่ได้ให้ค่าทันที และต้องใช้ภายในลูป for เพื่อรับค่า |
| การใช้งานหน่วยความจำมีมากขึ้น ส่งผลให้การประมวลผลโค้ดช้าลงเมื่อทำงานกับชุดข้อมูลขนาดใหญ่ | การรันโค้ดจะเร็วขึ้นโดยใช้ xrange() |
ใช้ช่วง ()
ตัวอย่างนี้แสดงวิธีการพิมพ์ค่าตั้งแต่ 0-9 โดยใช้ range()
ค่าที่ใช้ในช่วงคือ 10 ดังนั้นผลลัพธ์คือ 0 1 2 3 4 5 6 7 8 9
เนื่องจากไม่ได้ระบุค่าเริ่มต้น จึงถือว่าค่าเริ่มต้นเป็น 0 และใช้ค่าสุดท้ายจนถึง 9 โดยค่าสุดท้ายจะน้อยกว่าค่าที่กำหนดเสมอ 1 นั่นคือ stop-1
for i in range(10): print(i, end =" ")
Output:
0 1 2 3 4 5 6 7 8 9
ใช้การเริ่มและหยุดในช่วง ()
ในโค้ด ค่าเริ่มต้นคือ 3 และค่าสิ้นสุดคือ 10 เนื่องจากดัชนีเริ่มต้นคือ 3 ดังนั้นลำดับของตัวเลขจะเริ่มจาก 3 ไปจนถึงค่าสิ้นสุด ค่าสุดท้ายในลำดับจะเป็นค่าที่น้อยกว่าค่าสิ้นสุดอยู่ 1 คือ 10-1 = 9
for i in range(3, 10): print(i, end =" ")
Output:
3 4 5 6 7 8 9
การใช้สตาร์ท หยุด และก้าว
ค่าเริ่มต้นคือ 3 ดังนั้นลำดับตัวเลขจะเริ่มต้นที่ 3 ค่าหยุดคือ 10 ดังนั้นลำดับตัวเลขจะหยุดที่ (10-1) หรือ 9 ค่าขั้นคือ 2 ดังนั้นแต่ละค่าในลำดับจะเพิ่มขึ้นทีละ 2 หากไม่ได้ระบุค่าขั้น ค่าเริ่มต้นของขั้นจะเป็น 1
for i in range(3, 10, 2): print(i, end =" ")
Output:
3 5 7 9
ที่ผ่านมา เราได้เห็นแล้วว่าฟังก์ชัน range() จะให้ค่าที่เพิ่มขึ้นสำหรับค่าหยุดที่กำหนดให้ ต่อไปเรามาลองดูตัวอย่างการหาค่าที่ลดลงในช่วงที่กำหนดกัน
การเพิ่มค่าในช่วงโดยใช้ขั้นบวก
พารามิเตอร์ `step` ในฟังก์ชัน `range()` สามารถใช้เพื่อเพิ่มหรือลดค่าได้ โดยค่าเริ่มต้นจะเป็นค่าบวก คือ 1 ดังนั้นค่าที่ได้จะเพิ่มขึ้นเสมอ
ค่าขั้นตอนต้องเป็นค่าบวกหากคุณต้องการให้ค่าที่แสดงเป็นค่าที่เพิ่มขึ้นเรื่อยๆ
for i in range(1, 30, 5): print(i, end =" ")
Output:
1 6 11 16 21 26
Reverse ช่วง: ลดค่าลงโดยใช้ขั้นตอนติดลบ
พารามิเตอร์ `step` ที่มีค่าเป็นลบในฟังก์ชัน `range()` สามารถใช้เพื่อรับค่าที่ลดลงได้ ในตัวอย่างด้านล่าง ค่าของ `step` เป็นค่าลบ ดังนั้นผลลัพธ์จะถูกลดลงจากค่าช่วงที่กำหนด
for i in range(15, 5, -1): print(i, end =" ")
Output:
15 14 13 12 11 10 9 8 7 6
ค่าเริ่มต้นคือ 15 ค่าหยุดคือ 5 และค่าขั้นตอนเป็นจำนวนลบ คือ -1 ด้วยข้อมูลป้อนเข้าข้างต้น ฟังก์ชัน range() จะลดค่าลงจาก 15 ไปเรื่อยๆ จนกว่าจะถึงค่าหยุด แต่ความแตกต่างในที่นี้คือ ค่าสุดท้ายจะเป็นค่าหยุด + 1
การใช้ตัวเลขลอยตัวใน Python พิสัย()
ตอนนี้เรามาทำงานบน range() โดยใช้ตัวเลขที่มีจุดลอยตัวกัน
ตัวอย่าง:
for i in range(10.5): print(i, end =" ")
ในตัวอย่างข้างต้น เราใช้ค่าหยุดที่ 10.5
ผลลัพธ์คือ:
Traceback (most recent call last): File "python_range.py", line 1, in <module> for i in range(10.5): TypeError: 'float' object cannot be interpreted as an integer
Python เกิดข้อผิดพลาดเนื่องจากฟังก์ชัน range() ไม่รองรับตัวเลขทศนิยมสำหรับ start, stop และ step
การใช้ for-loop ด้วย Python พิสัย()
ในตัวอย่างนี้ เราจะใช้อาร์เรย์ของตัวเลขและดูวิธีการวนซ้ำอาร์เรย์ภายในลูป for โดยใช้ range()
ตัวอย่าง:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Output:
MysqlMongodb PostgreSQL Firebase
ในตัวอย่างข้างต้น เราใช้ len(arr_list) เป็นค่าหยุด การวนลูป for จะวนไปเรื่อยๆ จนกว่าจะถึงค่าหยุด นั่นคือความยาวของอาร์เรย์ ซึ่งจะเป็น 4 เนื่องจากเรามีสี่รายการใน arr_list ค่าเริ่มต้นจะเป็น 0 และขั้นตอนจะเป็น 1 ดังนั้นค่าจะเริ่มต้นจาก 0 และหยุดที่ 3 นั่นคือความยาวของอาร์เรย์ลบ 1 หมายความว่า 4 - 1 = 3
การใช้ Python range() เป็นรายการ
ในตัวอย่างนี้เราจะดูวิธีใช้เอาต์พุตจากช่วงเป็นรายการ
ตัวอย่าง:
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
คุณสามารถเห็นผลลัพธ์เป็นรูปแบบรายการ ไม่จำเป็นต้องวนซ้ำ range() และการใช้เมธอด list() ทำให้เราสามารถแปลงเอาต์พุตจาก range ไปเป็นรูปแบบรายการได้โดยตรง
การใช้อักขระในช่วงหลาม ()
จนถึงตอนนี้ เราได้ใช้จำนวนเต็มใน Python range() แล้ว นอกจากนี้ เรายังได้เห็นแล้วว่าตัวเลขที่มีจุดทศนิยมลอยตัวไม่ได้รับการรองรับใน Python range มาดูกันว่าจะเกิดอะไรขึ้นเมื่อเราใช้ตัวอักษร
ตัวอย่าง:
for c in range ('z'):
print(c, end =" ")
Output:
Traceback (most recent call last):
File "python_range.py", line 1, in <module>
for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer
มันแสดงข้อผิดพลาดว่าไม่สามารถตีความสตริงเป็นจำนวนเต็มได้
หากต้องการรับรายการตัวอักษร คุณสามารถปรับแต่งโค้ดและรับผลลัพธ์ที่ต้องการได้ดังที่แสดงด้านล่าง:
ตัวอย่าง:
def get_alphabets(startletter, stopletter, step):
for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
yield chr(c)
print(list(get_alphabets("a", "h", 1)))
Output:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
วิธีการเข้าถึงองค์ประกอบช่วง
คุณสามารถใช้ for-loop เพื่อรับค่าจากช่วง หรือใช้ดัชนีเพื่อเข้าถึงองค์ประกอบจาก range()
การใช้ for-loop
ตัวอย่าง:
for i in range(6):
print(i)
Output:
0 1 2 3 4 5
การใช้ดัชนี
ดัชนีจะใช้กับช่วงเพื่อรับค่าที่มีอยู่ในตำแหน่งนั้น หากค่าช่วงคือ 5 หากต้องการรับค่าเริ่มต้น คุณสามารถใช้ช่วง (5)[0] และช่วงค่าถัดไป (5)[1] ไปเรื่อยๆ
ตัวอย่าง:
startvalue = range(5)[0]
print("The first element in range is = ", startvalue)
secondvalue = range(5)[1]
print("The second element in range is = ", secondvalue)
lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)
Output:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
การใช้รายการ ()
วิธีนี้จะพิมพ์องค์ประกอบทั้งหมดจาก range() การใช้ list() มันจะส่งคืนองค์ประกอบจาก range() ในรูปแบบรายการ
ตัวอย่าง:
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
มันให้ผลลัพธ์รายการสำหรับช่วงที่กำหนด
ตัวอย่าง: รับเลขคู่โดยใช้ range()
การใช้ฟังก์ชัน `range()` จะได้รายการของตัวเลขคู่ในช่วงที่กำหนดเป็นอินพุต พารามิเตอร์สำหรับ `range()` คือ `start` คือ 2 `stop` คือ 20 และ `step` คือ 2 ดังนั้นค่าจะเพิ่มขึ้นทีละ 2 และจะให้ตัวเลขคู่ไปจนถึง `stop-2`
ตัวอย่าง:
for i in range(2, 20, 2): print(i, end =" ")
Output:
2 4 6 8 10 12 14 16 18
การรวมเอาต์พุตสองช่วง ()
ในตัวอย่างนี้ เราจะเชื่อมต่อฟังก์ชัน range() สองฟังก์ชันเข้าด้วยกันโดยใช้ฟังก์ชัน chain() จากโมดูล itertools
ตัวอย่าง:
from itertools import chain print("Merging two range into one") frange =chain(range(10), range(10, 20, 1)) for i in frange: print(i, end=" ")
Output:
Merging two range into one 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
การใช้ range() กับ NumPy
โมดูล NumPy มีฟังก์ชัน arange() ที่ใช้งานได้และให้ผลลัพธ์คล้ายกับ range() โดยฟังก์ชัน arange() รับพารามิเตอร์เดียวกันกับ range()
ไวยากรณ์:
arange(start, stop, step)
ในการใช้งาน NumPy ให้ทำตามขั้นตอนด้านล่างนี้
ขั้นตอนที่ 1: นำเข้าโมดูล NumPy
import numpy
ในกรณีที่ระหว่างการทำงาน เกิดข้อผิดพลาดแจ้งว่าไม่พบโมดูล numpy คุณต้องติดตั้งโมดูลตามขั้นตอนที่ 2
ขั้นตอนที่ 2ติดตั้ง NumPy
pip install numpy
ขั้นตอนที่ 3: ตัวอย่างการทำงานของ arange() โดยใช้ NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Output:
0 1 2 3 4 5 6 7 8 9
ตัวเลขจุดลอยตัวโดยใช้ NumPy arange()
ไม่สามารถรับลำดับเลขทศนิยมโดยใช้ range() ได้ แต่สามารถทำได้โดยใช้ NumPy arange()
ตัวอย่าง:
ช่วงที่เราต้องการคือตั้งแต่ 0.5 ถึง 1.5 โดยค่าจะเพิ่มขึ้นทีละ 0.2
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Output:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
ผลลัพธ์ที่ได้อาจดูแปลกๆ เล็กน้อย ตัวเลขทศนิยมบางตัวแสดงด้วยทศนิยม 16 ตำแหน่ง นี่เป็นเพราะความซับซ้อนในการจัดเก็บตัวเลขทศนิยมในรูปแบบไบนารี คุณสามารถปัดเศษค่าหากต้องการและจำกัดจำนวนทศนิยมให้เหลือตามที่ต้องการได้
