Python range() ฟังก์ชั่น: Float, List, For loop ตัวอย่าง
ความหมายของ Python พิสัย?
Python range() เป็นฟังก์ชันในตัวที่ใช้ได้กับ Python รถในตำนานจากเกม Python(3.x) และจะแสดงลำดับตัวเลขตามดัชนีเริ่มต้นและดัชนีหยุดที่กำหนดไว้ ในกรณีที่ไม่ได้ระบุดัชนีเริ่มต้น ดัชนีจะถือเป็น 0 และจะเพิ่มค่าทีละ 1 จนถึงดัชนีหยุด
ตัวอย่างเช่น range(5) จะส่งออกค่า 0,1,2,3,4 ให้คุณ Python range() เป็นคำสั่งที่มีประโยชน์มากและส่วนใหญ่จะใช้เมื่อคุณต้องวนซ้ำโดยใช้ for loop
วากยสัมพันธ์
range(start, stop, step)
พารามิเตอร์
- เริ่มต้น: (ทางเลือก) ดัชนีเริ่มต้นเป็นจำนวนเต็ม และหากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 0
- หยุด: ดัชนีหยุดจะตัดสินค่าที่ฟังก์ชันช่วงต้องหยุด เป็นอินพุตบังคับสำหรับฟังก์ชันช่วง ค่าสุดท้ายจะน้อยกว่าค่าหยุดเสมอ 1
- ขั้นตอน: (ไม่บังคับ) ค่าขั้นตอนคือตัวเลขที่ต้องเพิ่มช่วงของตัวเลขถัดไป โดยค่าเริ่มต้นคือ 1
ส่งคืนค่า
ค่าส่งคืนเป็นลำดับตัวเลขจากดัชนีเริ่มต้นถึงหยุดที่กำหนด
Python range() ฟังก์ชั่นและประวัติ
Python range() ได้รับการแนะนำใน Python เวอร์ชัน 3 ก่อนที่ xrange() จะเป็นฟังก์ชัน
ทั้ง range และ xrange() ใช้เพื่อสร้างลำดับตัวเลข
ต่อไปนี้คือความแตกต่างระหว่าง range และ xrange():
พิสัย() | เอ็กซ์เรนจ์() |
---|---|
range() จะให้ลำดับของตัวเลขและส่งคืนรายการของตัวเลข | ฟังก์ชัน xrange() จะมอบวัตถุตัวสร้างที่ต้องวนซ้ำในฟังก์ชัน for-loop เพื่อรับค่า |
range() ส่งคืนรายการ | xrange() ส่งคืนวัตถุตัวสร้าง |
เมธอด range() ใช้หน่วยความจำมากขึ้นเนื่องจากรายการที่ส่งคืนต้องถูกจัดเก็บเมื่อเปรียบเทียบกับ xrange() | เนื่องจาก xrange() ส่งคืนวัตถุตัวสร้าง จึงไม่ให้ค่าทันทีและจะต้องใช้ภายใน for-loop เพื่อรับค่า |
การใช้หน่วยความจำมีมากขึ้น ดังนั้นการรันโค้ดจึงช้าเมื่อทำงานกับชุดข้อมูลขนาดใหญ่ | การรันโค้ดจะเร็วขึ้นโดยใช้ xrange() |
ใช้ช่วง ()
ตัวอย่างนี้แสดงวิธีการพิมพ์ค่าตั้งแต่ 0-9 โดยใช้ range()
ค่าที่ใช้ในช่วงคือ 10 ดังนั้นเอาต์พุตคือ 0 1 2 3 4 5 6 7 8 9
เนื่องจากไม่ได้ระบุการเริ่มต้น การเริ่มต้นจึงถือเป็น 0 และค่าสุดท้ายถูกกำหนดจนถึง 9 ค่าสุดท้ายจะน้อยกว่าค่าที่กำหนดเสมอ 1 เช่น หยุด-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
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() ให้ค่าที่เพิ่มขึ้นสำหรับค่าหยุดที่กำหนดได้อย่างไร ตอนนี้ให้เราลองตัวอย่างเพื่อรับค่าที่ลดลงในช่วงที่กำหนด
การเพิ่มค่าในช่วงโดยใช้ขั้นตอนที่เป็นบวก
ขั้นตอนพารามิเตอร์ในช่วง () สามารถใช้เพื่อเพิ่ม/ลดค่าได้ โดยค่าเริ่มต้นจะเป็นค่าบวก 1 ดังนั้นจึงจะให้ค่าที่เพิ่มขึ้นเสมอ
ค่าขั้นตอนจะต้องเป็นบวกในกรณีที่คุณต้องการให้ค่าที่เพิ่มขึ้นเป็น ouput
for i in range(1, 30, 5): print(i, end =" ")
Output:
1 6 11 16 21 26
Reverse Range: การลดค่าโดยใช้ขั้นตอนเชิงลบ
ขั้นตอนพารามิเตอร์ที่มีค่าลบในช่วง () สามารถใช้เพื่อรับค่าที่ลดลงได้ ในตัวอย่างด้านล่าง ค่าขั้นตอนเป็นค่าลบ ดังนั้นเอาต์พุตจะลดลงจากค่าช่วงที่กำหนด
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() ไม่รองรับตัวเลขจุดลอยตัวสำหรับจุดเริ่ม จุดหยุด และจุดขั้น
การใช้ 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 loop จะวนซ้ำจนถึงค่าหยุด นั่นคือความยาวของอาร์เรย์และจะเป็น 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() 2 ฟังก์ชันเข้าด้วยกันด้วยความช่วยเหลือของฟังก์ชัน itertools module chain()
ตัวอย่าง:
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() Arrange() ใช้พารามิเตอร์เดียวกันเช่น 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 ตำแหน่ง สาเหตุเกิดจากความซับซ้อนในการจัดเก็บตัวเลขทศนิยมทศนิยมในรูปแบบไบนารี นอกจากนี้ คุณยังสามารถปัดเศษค่าได้หากจำเป็น และจำกัดให้เหลือเพียงตำแหน่งทศนิยมที่คุณต้องการ
สรุป
- Python range() เป็นฟังก์ชันในตัวที่ใช้ได้กับ Python รถในตำนานจากเกม Python(3.x) และจะแสดงลำดับตัวเลขตามดัชนีเริ่มต้นและดัชนีหยุดที่กำหนดไว้ ในกรณีที่ไม่ได้ระบุดัชนีเริ่มต้น ดัชนีจะถือเป็น 0 และจะเพิ่มค่าจนถึงดัชนีหยุด
- Python range() ได้รับการแนะนำจาก หลามเวอร์ชัน 3ก่อนหน้านั้น xrange() จะเป็นฟังก์ชัน
- ฟังก์ชัน range() จะให้ลำดับของตัวเลขและส่งกลับรายการของตัวเลข ฟังก์ชัน xrange() จะให้วัตถุตัวสร้างที่ต้องวนซ้ำในฟังก์ชัน for-loop เพื่อรับค่า
- ขั้นตอนพารามิเตอร์ในช่วง () สามารถใช้เพื่อเพิ่ม/ลดค่าได้ โดยค่าเริ่มต้นจะเป็นค่าบวก 1 ดังนั้นจึงจะให้ค่าที่เพิ่มขึ้นเสมอ
- Python ทำให้เกิดข้อผิดพลาดสำหรับตัวเลขจุดลอยตัว เนื่องจากฟังก์ชัน range() รองรับเฉพาะค่าจำนวนเต็มเท่านั้น
- ค่าจาก range() สามารถเข้าถึงได้โดยใช้ for-loop โดยใช้ดัชนีและ list()
- โมดูล NumPy มีฟังก์ชัน arange() ที่ทำงานและให้เอาต์พุตที่คล้ายกันเช่น range() arange() ใช้พารามิเตอร์เดียวกับ range()
- เป็นไปได้ที่จะรับลำดับจุดลอยตัว NumPy arange() ที่ไม่รองรับการใช้ range()