Python range() Hàm: Float, List, For loop Ví dụ

Là gì Python Phạm vi?

Python range() là một hàm tích hợp có sẵn với Python từ Python(3.x), và nó đưa ra một chuỗi số dựa trên chỉ số bắt đầu và dừng được đưa ra. Trong trường hợp chỉ số bắt đầu không được đưa ra, chỉ số được coi là 0 và nó sẽ tăng giá trị lên 1 cho đến chỉ số dừng.

Ví dụ: phạm vi (5) sẽ xuất ra cho bạn các giá trị 0,1,2,3,4. Python range() là một lệnh rất hữu ích và được sử dụng chủ yếu khi bạn phải lặp lại bằng vòng lặp for.

cú pháp

range(start, stop, step)

Thông số

  • bắt đầu: (tùy chọn) Chỉ số bắt đầu là một số nguyên và nếu không được cung cấp thì giá trị mặc định là 0.
  • dừng lại: Chỉ số dừng quyết định giá trị mà tại đó hàm phạm vi phải dừng. Đây là đầu vào bắt buộc cho hàm phạm vi. Giá trị cuối cùng sẽ luôn nhỏ hơn giá trị dừng 1.
  • bươc: (tùy chọn). Giá trị bước là số mà số tiếp theo trong phạm vi phải tăng lên, theo mặc định là 1.

Giá trị trả lại

Giá trị trả về là một dãy số từ chỉ số bắt đầu đến chỉ số dừng đã cho.

Python range() Chức năng và lịch sử

Python range() đã được giới thiệu từ python phiên bản 3, trước đó xrange() là hàm.

Cả phạm vi và xrange() đều được sử dụng để tạo ra một chuỗi số.

Sau đây là sự khác biệt giữa range và xrange():

phạm vi() xrange ()
Range() đưa ra chuỗi số và trả về danh sách các số. Hàm xrange() cung cấp một đối tượng máy phát cần được lặp trong vòng lặp for để lấy các giá trị.
Range() trả về một danh sách. xrange() trả về một đối tượng tạo.
Phương thức range() sử dụng nhiều bộ nhớ hơn vì danh sách trả về phải được lưu trữ so với xrange(). Vì xrange() trả về một đối tượng tạo nên nó không cung cấp giá trị ngay lập tức và phải được sử dụng bên trong vòng lặp for để lấy các giá trị.
Việc sử dụng bộ nhớ nhiều hơn do đó việc thực thi mã chậm khi làm việc trên một tập dữ liệu khổng lồ. Việc thực thi mã nhanh hơn khi sử dụng xrange().

Sử dụng phạm vi()

Ví dụ này cho thấy cách in các giá trị từ 0-9 bằng cách sử dụng range().

Giá trị được sử dụng trong phạm vi là 10, do đó đầu ra là 0 1 2 3 4 5 6 7 8 9

Vì điểm bắt đầu không được đưa ra nên điểm bắt đầu được coi là 0 và giá trị cuối cùng được đưa ra cho đến 9. Giá trị cuối cùng luôn nhỏ hơn 1 giá trị đã cho, tức là điểm dừng-1.

for i in range(10):
    print(i, end =" ")

Đầu ra:

0 1 2 3 4 5 6 7 8 9

Sử dụng bắt đầu và dừng trong phạm vi()

Trong mã, giá trị bắt đầu là 3 và giá trị dừng là 10. Ở đây chỉ số bắt đầu là 3, do đó chuỗi số sẽ bắt đầu từ 3 cho đến giá trị dừng. Giá trị cuối cùng trong chuỗi sẽ nhỏ hơn 1 so với giá trị dừng 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Đầu ra:

3 4 5 6 7 8 9

Sử dụng bắt đầu, dừng và bước

Giá trị bắt đầu là 3 nên dãy số sẽ bắt đầu từ 3. Giá trị dừng là 10 nên dãy số sẽ dừng ở (10-1) tức là 9. Bước là 2 nên mỗi giá trị trong dãy sẽ được tăng thêm 2. Nếu giá trị bước không được cung cấp, giá trị cho bước mặc định là 1.

for i in range(3, 10, 2):
    print(i, end =" ")

Đầu ra:

3 5 7 9

Cho đến nay, chúng ta đã thấy hàm range() đưa ra giá trị tăng dần cho giá trị dừng đã cho. Bây giờ chúng ta hãy thử một ví dụ để nhận giá trị giảm dần trong phạm vi đã cho.

Tăng các giá trị trong phạm vi bằng bước tích cực.

Bước tham số trong range() có thể được sử dụng để tăng/giảm các giá trị. Theo mặc định, nó là giá trị dương 1. Vì vậy, nó sẽ luôn cho các giá trị tăng dần.

Giá trị bước phải dương trong trường hợp bạn muốn tăng giá trị làm đầu ra.

for i in range(1, 30, 5):
    print(i, end =" ")

Đầu ra:

1 6 11 16 21 26

Revphạm vi erse: Giảm giá trị bằng bước âm

Bước tham số có giá trị âm trong range() có thể được sử dụng để nhận các giá trị giảm dần. Trong ví dụ bên dưới, giá trị bước là âm nên đầu ra sẽ giảm dần so với giá trị phạm vi đã cho.

for i in range(15, 5, -1):
    print(i, end =" ")

Đầu ra:

15 14 13 12 11 10 9 8 7 6

Giá trị bắt đầu là 15, giá trị dừng là 5 và giá trị bước là số âm tức là -1. Với đầu vào ở trên, hàm range() sẽ giảm giá trị từ 15 trở đi cho đến khi đạt giá trị dừng, nhưng ở đây điểm khác biệt là giá trị cuối cùng sẽ là stop + 1.

Sử dụng số động trong Python phạm vi()

Bây giờ chúng ta hãy làm việc với phạm vi() bằng cách sử dụng các số có dấu phẩy động.

Ví dụ:

for i in range(10.5):
    print(i, end =" ")

Trong ví dụ trên, chúng tôi đã sử dụng giá trị dừng là 10.5.

Đầu ra là:

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 đưa ra lỗi vì hàm range() không hỗ trợ số dấu phẩy động cho bước bắt đầu, dừng và bước.

Sử dụng vòng lặp for với Python phạm vi()

Trong ví dụ này, chúng ta sẽ sử dụng một mảng các số và xem cách sử dụng phép lặp mảng bên trong vòng lặp for bằng cách sử dụng range()

Ví dụ:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Đầu ra:

MysqlMongodb PostgreSQL Firebase

Trong ví dụ trên, chúng tôi đã sử dụng len(arr_list) làm giá trị dừng. Vòng lặp for sẽ lặp cho đến giá trị dừng tức là độ dài của mảng và giá trị đó sẽ là 4, vì chúng ta có bốn mục trong arr_list. Giá trị bắt đầu sẽ là 0 và bước sẽ là 1. Vì vậy, các giá trị sẽ bắt đầu từ 0 và sẽ dừng ở 3 tức là độ dài của mảng -1 nghĩa là 4 -1 = 3.

Sử dụng Python range() dưới dạng danh sách

Trong ví dụ này sẽ xem cách sử dụng đầu ra từ phạm vi làm danh sách.

Ví dụ:

print(list(range(10)))

Đầu ra:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Bạn có thể thấy đầu ra là một định dạng danh sách. Không cần thiết phải lặp phạm vi() và sử dụng phương thức list() chúng ta có thể chuyển đổi trực tiếp đầu ra từ định dạng phạm vi sang định dạng danh sách.

Sử dụng các ký tự trong phạm vi python()

Cho đến nay, chúng ta đã sử dụng số nguyên trong phạm vi python(). Chúng tôi cũng thấy rằng các số có dấu phẩy động không được hỗ trợ trong phạm vi python. Chúng ta hãy thử xem kết quả sẽ xảy ra như thế nào khi chúng ta sử dụng các ký tự.

Ví dụ:

for c in range ('z'):
        print(c, end =" ")

Đầu ra:

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

Nó đưa ra lỗi cho biết một chuỗi không thể được hiểu là số nguyên.

Để có được danh sách các bảng chữ cái, bạn có thể tùy chỉnh mã và nhận kết quả mong muốn như hiển thị bên dưới:

Ví dụ:

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

Đầu ra:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Cách truy cập các phần tử phạm vi

Bạn có thể sử dụng vòng lặp for để lấy các giá trị từ phạm vi hoặc sử dụng chỉ mục để truy cập các phần tử từ phạm vi().

Sử dụng vòng lặp for

Ví dụ:

for i in range(6):
    print(i)

Đầu ra:

0
1
2
3
4
5

Sử dụng chỉ mục

Chỉ mục được sử dụng với phạm vi để lấy giá trị có sẵn tại vị trí đó. Nếu giá trị phạm vi là 5, để lấy giá trị bắt đầu, bạn có thể sử dụng range(5)[0] và giá trị tiếp theo range(5)[1], v.v.

Ví dụ:

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)

Đầu ra:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Sử dụng danh sách()

Phương thức này sẽ in tất cả các phần tử từ phạm vi(). Sử dụng list() nó sẽ trả về các phần tử từ range() ở định dạng danh sách.

Ví dụ:

print(list(range(10)))

Đầu ra:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Nó cung cấp đầu ra danh sách cho phạm vi nhất định.

Ví dụ: Lấy số chẵn sử dụng range()

Sử dụng range() sẽ lấy danh sách các số chẵn trong phạm vi được cung cấp làm đầu vào. Các tham số cho range() là, start là 2, stop là 20 và step là 2, do đó các giá trị sẽ tăng thêm 2 và sẽ cho ra các số chẵn cho đến stop-2.

Ví dụ:

for i in range(2, 20, 2):
    print(i, end =" ")

Đầu ra:

2 4 6 8 10 12 14 16 18

Hợp nhất các đầu ra hai phạm vi ()

Trong ví dụ này sẽ ghép 2 hàm range() với sự trợ giúp của hàm itertools module chain().

Ví dụ:

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=" ")

Đầu ra:

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

Sử dụng phạm vi() Với NumPy

Mô-đun NumPy có hàm arange() hoạt động và cho kết quả đầu ra tương tự như range(). Phương thức sắp xếp() có cùng tham số như phạm vi().

Cú pháp:

arange(start, stop, step)

Để làm việc với NumPy, hãy làm theo các bước dưới đây.

Bước 1: Nhập mô-đun NumPy

import numpy

Trong khi thực thi, nó báo lỗi không tìm thấy mô-đun numpy, bạn cần cài đặt mô-đun như ở bước 2.

Bước 2: Cài đặt NumPy

pip install numpy

Bước 3: Ví dụ hoạt động của arange() sử dụng NumPy

import numpy as np 

for  i in np.arange(10):
   print(i, end =" ")        

Đầu ra:

0 1 2 3 4 5 6 7 8 9

Số dấu phẩy động sử dụng NumPy arange()

Không thể lấy chuỗi dấu phẩy động bằng cách sử dụng range(), nhưng có thể sử dụng NumPy arange().

Ví dụ:

Phạm vi mà chúng tôi muốn là từ 0.5 đến 1.5. Giá trị sẽ được tăng thêm 0.2.

import numpy as np 

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")        

Đầu ra:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Đầu ra chúng ta nhận được hơi kỳ lạ, một số số thực được hiển thị với 16 chữ số thập phân. Điều này xảy ra do sự phức tạp của việc lưu trữ số thực thập phân ở định dạng nhị phân. Bạn cũng có thể làm tròn các giá trị nếu cần và giới hạn chúng ở các chữ số thập phân mà bạn cần.

Tổng kết

  • Python range() là một hàm tích hợp có sẵn với Python từ Python(3.x), và nó đưa ra một chuỗi số dựa trên chỉ số bắt đầu và dừng được đưa ra. Trong trường hợp chỉ số bắt đầu không được đưa ra, chỉ số được coi là 0 và nó sẽ tăng giá trị cho đến chỉ số dừng.
  • Python range() đã được giới thiệu từ phiên bản trăn 3, trước đó xrange() là hàm.
  • Range() cung cấp chuỗi số và trả về danh sách số. Hàm xrange() cung cấp đối tượng generator cần được lặp trong vòng lặp for để lấy giá trị.
  • Bước tham số trong range() có thể được sử dụng để tăng/giảm các giá trị. Theo mặc định, nó là giá trị dương 1. Vì vậy, nó sẽ luôn cho các giá trị tăng dần.
  • Python đưa ra lỗi đối với số dấu phẩy động vì hàm range() chỉ hỗ trợ các giá trị số nguyên.
  • Các giá trị từ range() có thể được truy cập bằng vòng lặp for, sử dụng chỉ mục và list()
  • Mô-đun NumPy có hàm arange() hoạt động và cho kết quả đầu ra tương tự như range(). Hàm arange() có cùng tham số với hàm range().
  • Có thể lấy chuỗi dấu phẩy động NumPy arange() không được hỗ trợ bằng range().