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()