Hàm range
trong Python là một công cụ hữu ích và linh hoạt, được sử dụng rộng rãi trong việc lặp qua một dãy số. Hàm này tạo ra một chuỗi số liên tiếp, thường được sử dụng trong các vòng lặp for
để thực hiện một hành động nhất định nhiều lần. Điều đặc biệt về hàm range
là nó không lưu trữ tất cả các giá trị trong dãy số mà tạo ra từng giá trị một cách lười biếng, giúp tiết kiệm bộ nhớ khi làm việc với các dãy số lớn. Điều này làm cho hàm range
trở nên hiệu quả và nhanh chóng, đồng thời cung cấp khả năng tùy chỉnh cao qua các tham số như điểm bắt đầu, điểm kết thúc và bước nhảy, cho phép lập trình viên kiểm soát chính xác dãy số được tạo ra.
Tìm hiểu về hàm range() trong Python
Hàm range() trong Python cho phép bạn tạo một chuỗi số bằng cách sử dụng các tham số start, stop và step. Theo mặc định, range được tạo sẽ bắt đầu từ 0, tăng dần 1 và dừng trước số được chỉ định.
Trước khi chúng ta đi xa hơn, hãy ghi chú nhanh. range () thực sự không phải là một chức năng – đó là một loại. Khi bạn khởi tạo một đối tượng range (), một loại range sẽ được trả về. Lợi ích của việc này là nó sử dụng ít bộ nhớ hơn nhiều so với các loại vùng chứa, như danh sách hoặc bộ dữ liệu. Để giữ cho mọi thứ đơn giản và thiết thực, hướng dẫn này sẽ sử dụng thuật ngữ chức năng, thay vì loại.
Bây giờ, hãy xem cách chúng ta có thể sử dụng Python range() bằng cách khám phá các tham số và đối số mặc định của nó:
range(start=0, stop, step=1)
Chúng ta có thể thấy rằng hàm range() có ba tham số, chỉ một trong số đó là bắt buộc. Chúng ta hãy xem xét kỹ hơn các tham số này:
Tham số Mô tả Đối số mặc định Các loại được chấp nhận
- start= Giá trị để bắt đầu range tại. 0 số nguyên
- stop= Giá trị để dừng range tại (không bao gồm). N/A int
- step= Giá trị để tăng theo. 1 số nguyên
Các tham số của hàm tạo range() trong Python
Theo mặc định, hàm range sẽ bắt đầu từ 0, tăng thêm 1 và tăng lên (nhưng không bao gồm) giá trị được chỉ định tại tham số dừng.
Tạo đối tượng range Python()
Hãy xem cách chúng ta có thể sử dụng hàm range() để tạo một dải giá trị:
# tạo Range values = range(5) #in giá trị tron value print('range chứa: ', values) print('type của range: ', type(values))
Trong đoạn mã trên, chúng ta đã chuyển vào một dải giá trị từ 0 đến, nhưng không bao gồm 5. Có hai điểm chính rút ra từ khối mã ở trên:
- In range không in ra các giá trị, nhưng in ra chính đối tượng range
- Khởi tạo một range trả về một lớp loại range
Print các giá trị trong một đối tượng range Python()
Chúng ta có thể in ra các giá trị bằng cách lặp qua từng mục trong đối tượng. Chúng ta sẽ in từng mục trên cùng một dòng bằng cách sửa đổi tham số end= của hàm print(). Bằng cách chuyển vào một chuỗi chỉ chứa một khoảng trắng, mỗi mục được in trên cùng một dòng, cách nhau bởi một khoảng trắng.
# in giá trị của range values = range(5) for value in values: print(value, end=' ')
Chúng ta có thể thấy rằng hàm trả về các giá trị từ 0 đến 4. Hơn nữa, hàm này trả về một đối tượng chứa năm mục.
Hãy xem cách chúng ta có thể tùy chỉnh phần đầu của range trong Python.
Tùy chỉnh giá trị start trong range Python() Hàm
Theo mặc định, range Python() sẽ start bằng 0. Tuy nhiên, bạn có thể tùy chỉnh giá trị này bằng cách sửa đổi tham số start=. Hãy xem cách chúng ta có thể bắt đầu range của mình ở mức 5 và tăng lên 10 bằng cách chuyển các tham số của chúng ta:
# chỉnh sửa giá trị Python range() values = range(1, 10) for value in values: print(value, end=' ')
Bằng cách chuyển tham số start=, chúng ta có thể sửa đổi vị trí bắt đầu của range. Tham số bắt đầu là bao gồm, nghĩa là giá trị được bao gồm (không giống như tham số dừng). Trong phần sau, bạn sẽ tìm hiểu về tham số cuối cùng, step=.
Tùy chỉnh Step trong hàm Python range()
Tham số step= của hàm range() trong Python cho phép bạn chỉ định cách các giá trị được tăng (hoặc giảm) theo. Theo mặc định, giá trị này được đặt thành 1, nghĩa là các mục sẽ đi từ đầu đến cuối, tăng thêm 1.
Hãy xem cách chúng ta có thể chuyển vào một giá trị khác để chuyển qua range của mình bằng cách sử dụng các giá trị khác nhau:
# tùy chỉnh giá trị Step của Python ranges values = range(0, 9, 3) for value in values: print(value, end=' ')
Trong mã ở trên, chúng tôi tạo một range từ 0 đến 9, tăng dần theo 3. Điều này có nghĩa là chúng tôi đang tạo một range các số 0,3,6,9.
Bây giờ bạn đã tìm hiểu về tất cả các tham số khác nhau có sẵn trong loại range (), hãy xem xét một số trường hợp sử dụng và đặc điểm của đối tượng.
Sử dụng range Python() trong vòng lặp For
Trong nhiều trường hợp, bạn sẽ sử dụng đối tượng range Python() trong a để thực hiện một hành động nhiều lần. Chúng tôi dễ dàng làm điều này trong khi truy cập mục trong vòng lặp của chúng tôi.
Điều tuyệt vời ở điều này là nó cho phép bạn dễ dàng chỉ định số lần bạn muốn một đoạn mã chạy.
N. Ví dụ: chuyển vào range (5) xác định rằng vòng lặp for sẽ chạy năm lần.
Hãy xem nó trông như thế nào:
# hàm for với range for val in range(5): print(val, 'hello python')
Chúng tôi có thể thấy rằng chúng tôi có thể truy cập các mục trong range trong khi thực thi mã nhiều lần.
Nếu bạn không cần truy cập mục này, bạn có thể xác định mục này trong vòng lặp for của mình bằng cách sử dụng dấu gạch dưới. Điều này làm cho người đọc mã của bạn hiểu rõ rằng mục đang được lặp lại là một thứ bỏ đi. Hãy xem nó trông như thế nào:
# sử dụng vòng lặp sử dụng range() for _ in range(5): print('hello python')
Trong phần sau, bạn sẽ tìm hiểu cách tạo một dải Python đảo ngược.
Tạo range Python đảo ngược
Python giúp dễ dàng tạo một range đảo ngược bằng cách chuyển một giá trị âm vào tham số bước. Khi bạn chuyển một giá trị bước phủ định vào đối tượng range (), bạn có thể tạo một chuỗi các giá trị theo thứ tự ngược lại.
Hãy xem cách nó hoạt động bằng cách tạo một range giảm 1 từ 5 xuống 0:
# tạo một Python Range đảo ngược for val in range(5, 0, -1): print(val, end=' ') # Returns: 5 4 3 2 1
Tương tự, bạn cũng có thể tạo range giá trị âm bằng cách sử dụng bước phủ định này. Hãy tạo một range mới đi từ 0 đến -10:
# tạo một Range giá trị âm for val in range(0, -10, -1): print(val, end=' ')
Trong phần sau, bạn sẽ tìm hiểu cách tạo danh sách từ một dãy Python.
Cách tạo danh sách từ range Python
Khi bạn tạo một đối tượng range lần đầu tiên, các giá trị được lưu trữ ở định dạng hiệu quả về bộ nhớ. Tuy nhiên, trong một số trường hợp, bạn sẽ muốn chuyển đổi range bạn tạo thành danh sách Python.
Rất may, điều này được thực hiện dễ dàng bằng cách sử dụng hàm xây dựng list(). Bạn có thể chỉ cần chuyển range vào hàm list() để tạo danh sách ngoài range.
# chuyển từ Python Range sang List list_of_values = list(range(5)) print(list_of_values)
Hãy nhớ rằng bằng cách tạo một danh sách ngoài đối tượng range, bạn sẽ làm mất hiệu quả bộ nhớ mà đối tượng range có.
Cách sử dụng range Python với số float
Theo mặc định, hàm range() chỉ hoạt động với số nguyên. Trên thực tế, bằng cách chuyển vào số float, chương trình của bạn sẽ tăng TypeError. Đây là một cân nhắc quan trọng và có thể gây ra một số nhầm lẫn.
# tạo range Floats sẽ báo lỗi values = range(2.0) # Raises: TypeError: 'float' object cannot be interpreted as an integer
Trên thực tế, không có cách trực tiếp nào để tạo đối tượng range bằng dấu phẩy động. Tuy nhiên, chúng ta có thể tạo một danh sách ngoài đối tượng range của mình và chuyển đổi từng mục thành biểu diễn dấu phẩy động của nó.
# tạo danh sách float Loop values = range(5) floats = [] for value in values: floats.append(float(value)) print(floats)
Trong khối mã ở trên, chúng tôi đã sử dụng vòng lặp for để lặp qua từng phần tử trong range. Sau đó, chúng tôi đã chuyển đổi mục thành giá trị dấu chấm động bằng cách sử dụng hàm float() và nối nó vào danh sách.
Chúng tôi cũng có thể đơn giản hóa quy trình này bằng cách sử dụng khả năng hiểu danh sách Python để đơn giản hóa mã của chúng tôi. Hãy xem cách chúng ta có thể làm điều này:
# tạo danh sách Floats sử dụng list values = range(5) floats = [float(val) for val in values] print(floats)
Trong một số trường hợp, bạn sẽ muốn tạo một dải giá trị dấu phẩy động tăng dần theo giá trị thập phân. Đối với điều này, bạn có thể sử dụng hàm arange() của NumPy.
Tạo range với số float bằng NumPy
Hàm NumPy arange() cho phép bạn tạo các range có giá trị dấu phẩy động. Bằng cách này, bạn có thể tạo các range không tăng theo số nguyên. Hãy xem cách chúng ta có thể tạo một loạt các giá trị dấu chấm động từ 1,0 đến 10,0 tăng thêm 1,5:
# sử dụng numpy để tạo range import numpy as np floats = np.arange(1.0, 10.0, 1.5) print(floats) # Returns: [1. 2.5 4. 5.5 7. 8.5]
Cách sử dụng range Python tổng quát
Không có cách mặc định để tạo một range bao gồm trong Python. Tuy nhiên, bạn có thể tạo range bao gồm bằng cách thêm giá trị step vào giá trị stop . Điều này đảm bảo rằng giá trị stop sẽ được bao gồm trong range.
# tạo một Inclusive Range trong Python step = 1 values = range(0, 5 + step, step) for value in values: print(value, end=' ')
Trong phần sau, bạn sẽ tìm hiểu cách tạo range âm trong Python.
Cách tạo một range âm trong Python
Nói chung, Python sẽ không tạo ra bất cứ thứ gì khi bạn chỉ chuyển một giá trị âm vào hàm range(). Hãy xem nó trông như thế nào:
# tạo giá trị Negative Value cho range() values = range(-10) for value in values: print(value, end=' ')
Về mặt logic, điều này có ý nghĩa! Vì giá trị bắt đầu mặc định là 0 và đối số bước mặc định là 1 nên Python không thể chuyển từ 0 sang giá trị âm!
Để tạo dải âm, chúng ta có hai tùy chọn:
- Chúng ta có thể tạo một dải âm theo thứ tự tăng dần, hoặc
- Chúng ta có thể tạo một dải âm theo thứ tự giảm dần
Nếu chúng tôi muốn range của chúng tôi tăng giá trị, giá trị start của chúng tôi phải nhỏ hơn giá trị stop của chúng tôi. Tương tự, step của chúng ta phải dương. Hãy xem nó trông như thế nào:
# tạo Negative Range thứ tự tăng dần values = range(-5, 0) for value in values: print(value, end=' ')
Để tạo range âm với các giá trị giảm dần, các điều kiện sau phải đúng:
- start phải cao hơn stop
- Step phải là số âm
Hãy xem nó trông như thế nào trong Python:
# tạo Negative Range với thứ tự giảm dần values = range(-1, -6, -1) for value in values: print(value, end=' ')
Trong phần sau, bạn sẽ tìm hiểu cách lập chỉ mục một đối tượng range Python.
Index một đối tượng range Python
Một trong những điều tuyệt vời về các đối tượng range Python là chúng có thể lập index và có thể slice. Điều này cho phép bạn truy cập một phần tử cụ thể hoặc các slice phần tử trực tiếp từ range.
Điều này có thể được thực hiện bằng cách sử dụng chỉ mục dấu ngoặc vuông [] trên đối tượng range. Hãy xem cách chúng ta có thể truy cập mục thứ hai trong một range bằng cách truy cập chỉ mục thứ nhất:
# Indexing trong đối tượng range values = range(10) print(values[1])
Tương tự, chúng ta có thể sử dụng lập chỉ mục phủ định để truy cập các mục từ cuối range. Hãy xem cách chúng ta có thể truy cập mục cuối cùng thứ hai bằng cách lập chỉ mục cho chỉ mục -2:
# sử dụng Negative Indexing trong python range values = range(10) print(values[-2])
Chúng tôi thậm chí có thể chọn các slice của đối tượng range của mình bằng cách chuyển vào một slide các giá trị. Hãy xem cách chúng ta có thể truy cập năm mục đầu tiên của một range nhất định:
# Slicing trong range values = range(10) print(values[:5])
Lưu ý ở đây rằng slice tự nó trả về một đối tượng range. Để có được các giá trị thực tế, bạn có thể chuyển đổi đối tượng thành danh sách bằng cách sử dụng hàm list(). Trong phần tiếp theo, bạn sẽ tìm hiểu cách truy cập các thuộc tính khác nhau của một đối tượng range.
Truy cập các thuộc tính start, stop, step trong range Python
Bởi vì các đối tượng range Python là các đối tượng, nên chúng có các thuộc tính khác nhau. Cụ thể, đối tượng range có ba thuộc tính:
- .start, xác định điểm bắt đầu của range
- .stop, xác định điểm dừng của range
- .step, xác định bước của range
Hãy tạo một range Python và in ra các thuộc tính sau:
# truy cập vào thuộc tính range trong Python values = range(11) print('giá trị start: ', values.start) print('giá trị stop: ', values.stop) print('giá trị step: ', values.step)
Kết luận
Trong hướng dẫn này, bạn đã học cách sử dụng range () trong Python để tạo chuỗi giá trị. Trước tiên, bạn đã học cách sử dụng hàm range bằng cách hiểu các tham số khác nhau của nó. Sau đó, bạn đã học cách tùy chỉnh hành vi của hàm. Các range bạn có thể tạo có thể được sử dụng với tính linh hoạt đáng kể. Hiểu tất cả những gì loại này cung cấp có thể giúp bạn trở thành một lập trình viên Python giỏi hơn nhiều.