Menguasai Fungsi range() Python: Dari Dasar hingga Kasus Lanjutan
Apa Itu Python range?
range() Python adalah generator bawaan yang menghasilkan urutan bilangan bulat berdasarkan start, stop, dan step opsional. Jika nilai start dihilangkan, defaultnya adalah 0, dan urutan bertambah 1 hingga mencapai nilai stop (eksklusif). Misalnya, range(5) menghasilkan 0, 1, 2, 3, 4. Fungsi ini tak tergantikan saat mengulang dengan loop for.
Dalam tutorial ini Anda akan mempelajari:
- Definisi dan sintaks
range() - Sejarah:
range() vs. xrange() - Cara menggunakan
range() dengan start, stop, dan step - Menaikkan dan menurunkan rentang
- Menangani batas desimal dan alternatif
- Menggunakan
range() dengan list, array, dan arange() NumPy - Pola lanjutan: menggabungkan rentang, mengextrak bilangan genap, dan menghasilkan urutan alfabet
Sintaks
range(start, stop, step)
Parameter
- start (opsional): Bilangan bulat pertama dalam urutan. Default ke 0 jika dihilangkan.
- stop (wajib): Batas atas (eksklusif). Urutan berhenti sebelum nilai ini.
- step (opsional): Interval antara nilai berturut-turut. Default ke 1.
Nilai Kembali
Mengembalikan objek range, yang berperilaku seperti urutan bilangan bulat yang tidak dapat diubah. Saat dikonversi ke list, ia menampilkan urutan lengkap.
Fungsi range() Python dan Sejarah
Diperkenalkan di Python 3, range() menggantikan xrange() yang lebih lama yang digunakan di Python 2. Perbedaan utama diringkas di bawah ini:
| range() | xrange() |
| Mengembalikan urutan angka yang tidak dapat diubah. | Mengembalikan objek generator. |
| Mengonsumsi memori proporsional dengan panjang urutan. | Menggunakan memori minimal; menghasilkan nilai secara malas. |
| Cocok untuk rentang kecil hingga menengah. | Disukai untuk rentang besar atau urutan tak terbatas. |
| Lebih lambat pada rentang sangat besar karena alokasi memori. | Lebih cepat saat mengulang rentang besar. |
Menggunakan range()
Berikut adalah contoh dasar yang mencetak angka dari 0 hingga 9:
for i in range(10): print(i, end =" ")
Output:
0 1 2 3 4 5 6 7 8 9
Menggunakan start dan stop dalam range()
Menentukan nilai start menggeser urutan:
for i in range(3, 10): print(i, end =" ")
Output:
3 4 5 6 7 8 9
Menggunakan start, stop, dan step
Dengan menambahkan step, Anda dapat mengontrol interval antara angka:
for i in range(3, 10, 2): print(i, end =" ")
Output:
3 5 7 9
Menaikkan nilai dengan step positif
Step default adalah 1, tetapi Anda dapat menentukan bilangan bulat positif apa pun:
for i in range(1, 30, 5): print(i, end =" ")
Output:
1 6 11 16 21 26
Rentang Terbalik: Menurunkan dengan step negatif
Memberikan step negatif membuat urutan menurun:
for i in range(15, 5, -1): print(i, end =" ")
Output:
15 14 13 12 11 10 9 8 7 6
Menggunakan angka desimal dalam Python range()
range() bawaan hanya menerima bilangan bulat. Mencoba melewatkan desimal memicu TypeError:
for i in range(10.5): print(i, end =" ")
Output:
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
Menggunakan loop for dengan Python range()
Range sering dipasangkan dengan len() untuk mengulang indeks list:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Output:
Mysql Mongodb PostgreSQL Firebase
Menggunakan Python range() sebagai list
Mengonversi range ke list adalah mudah:
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Menggunakan karakter dalam python range()
Sementara range() hanya bekerja dengan bilangan bulat, Anda dapat menghasilkan urutan alfabet dengan mengonversi karakter ke titik kode Unicode:
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']
Cara Mengakses Elemen Range
Anda dapat mengambil nilai melalui iterasi, pengindeksan, atau konversi ke list:
Iterasi
for i in range(6): print(i)
Output:
0 1 2 3 4 5
Pengindeksan
startvalue = range(5)[0] print("Elemen pertama dalam range adalah = ", startvalue) secondvalue = range(5)[1] print("Elemen kedua dalam range adalah = ", secondvalue) lastvalue = range(5)[-1] print("Elemen terakhir dalam range adalah = ", lastvalue) Output:
Elemen pertama dalam range adalah = 0 Elemen kedua dalam range adalah = 1 Elemen terakhir dalam range adalah = 4
Menggunakan list()
print(list(range(10)))
Output:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Contoh: Dapatkan bilangan genap menggunakan range()
Untuk menghasilkan bilangan genap hingga 18:
for i in range(2, 20, 2): print(i, end =" ")
Output:
2 4 6 8 10 12 14 16 18
Menggabungkan dua output range()
Menggabungkan dua objek range dapat dilakukan dengan itertools.chain:
from itertools import chain print("Menggabungkan dua range menjadi satu") frange = chain(range(10), range(10, 20, 1)) for i in frange: print(i, end =" ") Output:
Menggabungkan dua range menjadi satu 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Menggunakan range() Dengan NumPy
arange() NumPy mencerminkan range() tetapi mendukung step desimal:
Sintaks
arange(start, stop, step)
Contoh
import numpy as np for i in np.arange(10): print(i, end =" ")
Output:
0 1 2 3 4 5 6 7 8 9
Rentang desimal dengan NumPy
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
Karena aritmetika desimal adalah biner, output kadang-kadang menunjukkan perluasan desimal panjang. Anda dapat membulatkan nilai sesuai kebutuhan.
Ringkasan
- range() menghasilkan urutan bilangan bulat yang didefinisikan oleh start, stop, dan step.
- Diperkenalkan di Python 3; xrange() adalah pendahulunya di Python 2.
- Gunakan step positif untuk urutan naik, negatif untuk urutan turun.
- Angka desimal tidak didukung; gunakan NumPy arange() untuk desimal.
- Akses elemen melalui iterasi, pengindeksan, atau konversi
list(). - Gabungkan rentang dengan
itertools.chain atau hasilkan urutan khusus seperti alfabet. - Untuk rentang numerik besar, pertimbangkan perilaku generator untuk efisiensi memori.