Trong Python, có thể sử dụng range()
chức năng để có được một chuỗi các chỉ mục để lặp qua một lần lặp. Bạn sẽ thường xuyên sử dụng range()
kết hợp với một for
vòng.
Trong hướng dẫn này, bạn sẽ tìm hiểu về các cách khác nhau mà bạn có thể sử dụng range()
chức năng – với các chỉ số bắt đầu và dừng rõ ràng, kích thước bước tùy chỉnh và kích thước bước phủ định.
Bắt đầu nào.
Hiểu về Python range()
Chức năng
Trước khi xem xét các cách khác nhau để sử dụng range()
chức năng, bạn phải hiểu nó hoạt động như thế nào.
Các
range()
hàm trả về một đối tượng phạm vi.
Đối tượng phạm vi này lần lượt trả về các mục liên tiếp trong chuỗi khi bạn lặp lại nó.
Như đã nêu ở trên, hàm phạm vi không trở lại một danh sách các chỉ số. Thay vào đó, nó trả về một đối tượng phạm vi trả về các chỉ số khi bạn cần chúng. Điều này làm cho nó hiệu quả bộ nhớ là tốt.
Bạn có thể dùng range()
hàm với cú pháp tổng quát sau:
range(start,stop,step)
Khi bạn sử dụng cú pháp này kết hợp với một vòng lặp, bạn có thể nhận được một chuỗi các chỉ số từ start
lên đến nhưng không bao gồm stop
trong các bước của step
.
- Bạn phải chỉ định cần thiết tranh luận
stop
, có thể là bất kỳ số nguyên dương nào. Thay vào đó, nếu bạn chỉ định một số dấu phẩy động, bạn sẽ gặp phải mộtTypeError
như hình:
my_range = range(2.5)

- Nếu bạn không chỉ định
start
chỉ số, các mặc định bắt đầu chỉ số củaĐược sử dụng.
- Nếu bạn không chỉ định
step
giá trị, các mặc định kích thước bước của1
Được sử dụng.
Trong các phần tiếp theo, bạn sẽ tìm hiểu về các cách khác nhau để sử dụng range()
chức năng.
Cách sử dụng Python range()
Chức năng lặp qua bất kỳ Iterable nào
Như đã đề cập trong phần trước, bạn chỉ cần một số nguyên dương để sử dụng range()
chức năng. Cú pháp được hiển thị dưới đây:
range(stop)
Bạn có thể sử dụng dòng mã trên để lấy một chuỗi từ xuyên qua
stop-1
: ,
1
, 2
, 3
,…, stop-1
.
▶ Xem xét ví dụ sau khi bạn gọi range()
với 5 là đối số. Và bạn lặp qua đối tượng phạm vi được trả về bằng cách sử dụng for
vòng lặp để nhận các chỉ số 0,1,2,3,4 như mong đợi.
for index in range(5):
print(index)
#Output
0
1
2
3
4
Nếu bạn còn nhớ, tất cả các lần lặp trong Python đều theo sau không lập chỉ mục. Đây là lý do tại sao nó thuận tiện để sử dụng range()
để lặp qua các lần lặp.
Một lần lặp có độ dài len
có ,
1
, 2
…, len-1
như các chỉ số hợp lệ. Vì vậy, để duyệt qua bất kỳ lần lặp nào, tất cả những gì bạn cần làm là đặt stop
giá trị bằng len
. Trình tự bạn sẽ nhận được – ,
1
, 2
…, len-1
– là chuỗi các chỉ số hợp lệ.
▶ Lấy một ví dụ hữu ích hơn. Bạn có một danh sách my_list
. Bạn có thể truy cập tất cả các mục trong danh sách bằng cách biết các chỉ số của chúng và bạn có thể lấy các chỉ số đó bằng cách sử dụng range()
như hình dưới đây:
my_list = ["Python","C","C++","JavaScript","Julia","Rust","Go"]
for index in range(len(my_list)):
print(f"At index {index}, we have {my_list[index]}")
Hãy nhớ rằng, bạn có thể sử dụng hàm có sẵn của Python len
để có được độ dài của bất kỳ lần lặp nào. Trong đoạn mã trên, bạn sử dụng cả chỉ mục hợp lệ và danh sách các mục tại các chỉ mục hợp lệ đó. Đây là đầu ra:

Nhận thấy như thế nào my_list
dài 7 mục và các chỉ số thu được là từ 0 đến 6, như mong đợi.
Đôi khi, bạn có thể cần sử dụng số nguyên âm để thay thế. Trong trường hợp này, nếu bạn chỉ sử dụng stop
đối số, bạn sẽ không nhận được đầu ra mong muốn, mặc dù mã không đưa ra lỗi.
Điều này là do mặc định start
giá trị được giả định là và bạn không thể đếm ngược từ
đến
-5
.
for index in range(-5):
print (index)
#Output
#NOTHING HERE
Cách sử dụng Python range()
Chức năng với các chỉ số bắt đầu và kết thúc rõ ràng
Bạn có thể không phải lúc nào cũng muốn bắt đầu từ con số không. Bạn có thể bắt đầu tại bất kỳ chỉ mục tùy ý nào bằng cách đặt start
giá trị cho chỉ mục mà bạn muốn bắt đầu từ đó. Cú pháp như sau:
range(start,stop)
Trong trường hợp này, bạn sẽ có thể nhận được trình tự: start
, start + 1
, start + 2
và cứ thế cho đến stop-1
.
▶ Trong ví dụ bên dưới, bạn đang bắt đầu từ 10, hãy đếm đến hết nhưng không bao gồm 15 trong các bước của 1.
for index in range(10,15):
print(index)
#Output
10
11
12
13
14
Trong phần trước, bạn đã thấy cách chỉ sử dụng stop
đối số sẽ không hoạt động khi bạn cần số nguyên âm. Tuy nhiên, khi bạn chỉ định start
và stop
chỉ số một cách rõ ràng, bạn cũng có thể làm việc với các số nguyên âm.
▶ Trong ví dụ này, bạn đang cố gắng đếm từ -5 theo các bước của 1. Luôn nhớ rằng việc đếm dừng lại ở giá trị nhỏ hơn một giá trị stop
mục lục.
for index in range(-5,0):
print(index)
#Output
-5
-4
-3
-2
-1
Cách sử dụng Python range()
Chức năng với một Kích thước bước tùy chỉnh
Thay vì duyệt tuần tự một iterable, đôi khi bạn có thể muốn duyệt qua nó, truy cập mọi k
-phần tử thứ. Đây là khi tùy chọn step
lập luận có ích. Cú pháp chung được hiển thị dưới đây:
range(start,stop,step)
Khi bạn sử dụng cú pháp này và lặp qua đối tượng phạm vi, bạn có thể đi từ start
đến stop-1
với những bước tiến lớn step
.
- Bạn sẽ nhận được trình tự:
start
,start + step
,start + 2*step
và cứ thế cho đếnstart + k*step
như vậy màstart + k*step
<stop
vàstart + (k+1)*step
>stop
.
▶ Trong ví dụ dưới đây, bạn muốn đi từ 0 đến 20 trong các bước 2. Lưu ý chỉ số cuối cùng được in ra là 19. Điều này là do, nếu bạn thực hiện thêm một bước nữa, bạn sẽ ở 21, tức là lớn hơn hơn 20.
Hãy luôn nhớ rằng, giá trị cuối cùng bạn nhận được có thể gần bằng stop
càng tốt, nhưng không bao giờ có thể được stop
.
for index in range(1,20,2):
print(index)
#Output
1
3
5
7
9
11
13
15
17
19
Cách sử dụng Python range()
Chức năng với kích thước bước âm
Cho đến nay, bạn đã học cách sử dụng range()
chức năng với start
và stop
các chỉ số và kích thước bước cụ thể, đồng thời đếm ngược từ start
đến stop
.
Nếu bạn cần đếm ngược từ một số nguyên, bạn có thể chỉ định giá trị âm cho step
. Cú pháp chung là:
range(start,stop,<negative_step>)
- Bây giờ đối tượng phạm vi có thể được sử dụng để trả về một chuỗi đếm ngược từ
start
trong các bước củanegative_step
lên đến nhưng không bao gồmstop
. - Chuỗi trả về là
start
,start - negative_step
,start - 2*negative_step
và cứ thế cho đếnstart - k*negative_step
như vậy màstart - k*negative_step
>stop
vàstart - (k+1)*negative_step
<stop
. - Không có giá trị mặc định cho bước phủ định – bạn phải đặt
negative_step = -1
để đếm ngược bao gồm mỗi số.
▶ Trong ví dụ này, bạn muốn đếm ngược từ 20 theo bước -2. Vì vậy, chuỗi là 20, 18, 16, giảm dần xuống còn 2. Nếu bạn đi thấp hơn 2 bước nữa, bạn sẽ chạm 0, mà bạn không thể chạm được vì nó nhỏ hơn giá trị dừng là 1.
for index in range(20,1,-2):
print(index)
#Output
20
18
16
14
12
10
8
6
4
2
Thật dễ dàng để thấy rằng start
> stop
để có thể đếm ngược.
for index in range(10,20,-1):
print(index)
#Ouput
#Nothing is printed - the sequence is empty.
▶ Trong ví dụ trên, bạn thử đếm ngược từ 10 đến 20 thì không được. Và bạn không nhận được bất kỳ đầu ra nào như mong đợi.
Cách sử dụng Python range()
và reversed()
Các hàm để đảo ngược một chuỗi
Nếu bạn cần truy cập các phần tử của một iterable theo thứ tự ngược lại, bạn có thể sử dụng range()
chức năng kết hợp với reversed()
chức năng.
Python tích hợp sẵn
reversed()
hàm trả về một trình vòng lặp đảo ngược trên các giá trị của một chuỗi đã cho.
▶ Hãy lấy ví dụ đầu tiên của chúng tôi, nơi chúng tôi đã sử dụng range(5)
. Trong ví dụ dưới đây, chúng tôi gọi reversed()
trên đối tượng phạm vi. Và chúng ta thấy rằng chúng ta đã đếm ngược từ 4 đến 0.
for index in reversed(range(5)):
print (index)
#Output
4
3
2
1
0
Như bạn có thể thấy, điều này tương đương với việc sử dụng range(4,-1,-1)
. Nếu bạn thích, bạn có thể sử dụng reversed()
chức năng thay vì negative_step
lập luận đã thảo luận trong phần trước.
Phần kết luận
Trong hướng dẫn này, bạn đã học được những cách khác nhau mà bạn có thể sử dụng range()
chức năng. Bạn có thể thử một vài ví dụ để có được một trình tự khác nhau mỗi lần. Thực hành này sẽ giúp bạn sử dụng range()
hiệu quả khi lặp qua các lần lặp.
Chúc mừng mã hóa! Cho đến hướng dẫn tiếp theo.🙂