Kursus
Fungsi range() sangat populer dan banyak digunakan di Python, terutama saat Anda bekerja dengan loop for, dan terkadang juga dengan loop while. Fungsi range() layak untuk dipahami dan dikuasai karena akan membuka banyak peluang: range() digunakan mulai dari mengendalikan alur program hingga melakukan iterasi pada himpunan data yang Anda gunakan untuk analisis data.
Jika Anda baru mulai belajar Python dan ingin mendalami lebih jauh, ikuti kursus DataCamp Introduction to Data Science in Python.
Apa itu Fungsi range() di Python?
Fungsi range() mengembalikan sebuah urutan angka dan bersifat immutable, artinya nilainya tetap. Fungsi range() menerima satu atau maksimal tiga argumen, yaitu nilai start dan stop beserta ukuran step.
range() diperkenalkan di Python3. Di Python2, digunakan fungsi serupa, xrange(), yang perilakunya agak berbeda. Antara lain, xrange() mengembalikan objek generator dan menggunakan lebih sedikit memori, sementara range(), di sisi lain, mengembalikan daftar atau urutan angka.
Sebagian alasan mengapa fungsi range() berguna adalah karena ia hanya menyimpan nilai start, stop, dan step, sehingga menggunakan lebih sedikit memori dibandingkan daftar atau tuple.
Sintaks Fungsi Python range()
Fungsi range() dapat direpresentasikan dalam tiga cara berbeda, atau Anda dapat menganggapnya sebagai tiga parameter range():
range(stop_value): Secara default, titik awalnya adalah nol.
range(start_value, stop_value): Ini menghasilkan urutan berdasarkan nilai awal dan akhir.
range(start_value, stop_value, step_size): Ini menghasilkan urutan dengan menambahkan nilai awal menggunakan ukuran langkah hingga mencapai nilai akhir.

Kita juga dapat memeriksa tipe dari fungsi range() dengan membungkus range() dalam type().
my_range = range(100)
print(type(my_range))
# Expected output: <class 'range'>
Contoh Fungsi Python range()
Sekarang mari kita lihat beberapa contoh agar Anda dapat berlatih dan menguasai penggunaan range().
Menggunakan Python range() untuk mencetak urutan angka
Mulailah dengan contoh sederhana mencetak urutan sepuluh angka, yang akan mencakup parameter range() pertama Anda. Untuk mencapainya, Anda hanya akan meneruskan nilai stop. Karena Python menggunakan indeks berbasis nol, urutan akan dimulai dari nol dan berhenti pada angka yang ditentukan, yaitu n-1, di mana n adalah angka yang ditentukan dalam fungsi range().
my_range = range(10)
for num in my_range:
print(num)
# Expected output:
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
Sesuai perkiraan, sel di atas mengembalikan urutan angka yang dimulai dari 0 dan berakhir pada 9.
Menggunakan Python range() dengan list()
Anda juga dapat menggunakan fungsi range sebagai argumen untuk list, yang akan menghasilkan sebuah list angka dengan panjang sama dengan nilai stop seperti ditunjukkan di bawah ini:
my_range = list(range(10))
print(my_range)
range_length = len(my_range)
print(range_length)
# Expected output:
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 10
Memanfaatkan start, stop, dan step dalam Python range()
Selanjutnya, mari lihat cara lain bekerja dengan fungsi range(). Di sini Anda akan menentukan nilai start dan stop.
my_range = range(5, 10)
print(my_range)
# Expected output: range(5, 10)
for num in range(5,10):
print(num)
# Expected output:
# 5
# 6
# 7
# 8
# 9
Demikian pula, Anda dapat menggunakan fungsi range() untuk mencetak nilai bilangan bulat negatif.
for num in range(-5,0):
print(num)
# Expected output:
# -5
# -4
# -3
# -2
# -1
Sekarang mari tambahkan parameter ketiga, yaitu ukuran step pada fungsi range(), dan cari tahu bagaimana pengaruhnya terhadap output. Anda akan menentukan titik start sebagai 50, nilai stop sebagai 1000 dengan ukuran step 100. Fungsi range di bawah ini akan menghasilkan urutan yang dimulai dari 50 dan bertambah dengan langkah 100.
my_range = range(50,1000,100)
print(my_range)
# Expected output: range(50, 1000, 100)
Anda akan melihat bahwa ini akan mencetak semua bilangan genap.
for num in range(50,1000,100):
print(num)
# Expected output:
# 50
# 150
# 250
# 350
# 450
# 550
# 650
# 750
# 850
# 950
Catatan tentang Python range() dan nilai float
Penting untuk dicatat bahwa fungsi range() hanya dapat bekerja ketika nilai yang ditentukan adalah bilangan bulat. Fungsi ini tidak mendukung tipe data float maupun string. Namun, Anda dapat meneruskan nilai bilangan bulat positif maupun negatif. Mari lihat apa yang terjadi saat Anda mencoba meneruskan nilai float.
for num in range(0.2,2.4):
print(num)
# Expected output:
# TypeError: 'float' object cannot be interpreted as an integer
Anda mungkin pernah menggaruk kepala saat mencoba membalik linked list berisi nilai bilangan bulat dalam bahasa C. Namun, di Python, ini dapat dicapai dengan fungsi range() hanya dengan menukar start dan stop serta menambahkan ukuran langkah negatif. Bukankah itu sederhana? Mari kita buktikan!
for num in range(100,10,-10):
print(num)
# Expected output:
# 100
# 90
# 80
# 70
# 60
# 50
# 40
# 30
# 20
Menggunakan range() untuk mencari jumlah elemen sebuah list
Misalkan Anda memiliki sebuah list berisi nilai bilangan bulat, dan Anda ingin mencari jumlah (sum) dari list tersebut, tetapi menggunakan fungsi range(). Mari kita lihat bagaimana caranya.
Pertama, Anda akan mendefinisikan list yang berisi nilai bilangan bulat. Lalu inisialisasi sebuah penghitung tempat Anda menyimpan nilai setiap kali mengiterasi list dan menambahkan nilai list saat ini dengan nilai hitungan sebelumnya.
Untuk mengakses elemen dari list, Anda akan menerapkan fungsi range() pada length list dan kemudian mengakses elemen list dengan meneruskan indeks i yang akan dimulai dari nol dan berhenti pada panjang list.
list1 = [2,4,6,8,10,12,14,16,18,20]
count = 0
for i in range(len(list1)):
count = count + list1[i]
print(count)
print('sum of the list:', count)
# Expected output:
# 2
# 6
# 12
# 20
# 30
# 42
# 56
# 72
# 90
# 110
# sum of the list: 110
Menggunakan range() dengan itertools untuk menggabungkan list
Anda juga dapat menggabungkan dua atau lebih fungsi range() menggunakan kelas paket itertools bernama chain. Dan bukan hanya fungsi range, Anda juga bisa menggabungkan list, tuple, dll. Ingat bahwa metode chain mengembalikan objek generator, dan untuk mengakses elemen dari objek generator tersebut, Anda bisa menggunakan loop for atau menggunakan list dan meneruskan objek generator sebagai argumen.
from itertools import chain
a1 = range(10,0,-2)
a2 = range(30,20,-2)
a3 = range(50,40,-2)
final = chain(a1,a2,a3)
print(final) #generator object
# Expected output: <itertools.chain object at 0xae6330>
print(list(final))
# Expected output:
# [10, 8, 6, 4, 2, 30, 28, 26, 24, 22, 50, 48, 46, 44, 42]
Python range() dan perbandingan kesetaraan
Anda dapat menerapkan perbandingan kesetaraan antar fungsi range(). Diberikan dua fungsi range(), jika keduanya merepresentasikan urutan nilai yang sama, maka keduanya dianggap sama. Meski demikian, dua fungsi range() yang sama tidak harus memiliki atribut start, stop, dan step yang sama. Mari pahami dengan contoh.
# range(0, 10, 3) = [0, 3, 6, 9]
# range(0, 11, 3) = [0, 3, 6, 9]
print(range(0, 10, 3) == range(0, 11, 3))
# Expected output: True
# range(0, 10, 3) = [0, 3, 6, 9]
# range(0, 11, 2) = [0, 2, 4, 6, 8, 10]
print(range(0, 10, 3) == range(0, 11, 2))
# Expected output: False
Seperti yang dapat Anda lihat dari output di atas, meskipun parameter fungsi range() berbeda, keduanya tetap dianggap sama karena urutan dari kedua fungsi tersebut sama. Pada contoh kedua, mengubah ukuran step membuat perbandingan menjadi False.
Kesimpulan
Selamat telah menyelesaikan tutorial ini. Anda mungkin ingin bereksperimen sedikit dengan fungsi range() dan mencari cara untuk menyesuaikannya agar dapat menerima tipe data selain bilangan bulat.
Jika setelah membaca Anda merasa akan terbantu dengan berlatih fungsi-fungsi Python, lihat tutorial kami Python Functions dan Beginner's Guide to Python for Loops. Untuk jalur belajar terstruktur, lihat kursus DataCamp Writing Efficient Python Code, yang tidak hanya membahas fungsi range() secara mendalam tetapi juga membantu konsep pemrograman yang lebih umum agar Anda dapat menulis kode yang benar-benar efisien tanpa banyak overhead.
