List, Tuple, dan Set
List, tuple, dan set adalah tipe data yang digunakan untuk menyimpan banyak nilai dalam satu variabel. Ketiganya mirip karena sama-sama bisa menyimpan kumpulan data, tetapi memiliki aturan dan kegunaan yang berbeda.
List
List adalah tipe data yang digunakan untuk menyimpan banyak nilai secara berurutan. List ditulis menggunakan tanda kurung siku ([]).
Penulisan List
List bisa berisi teks, angka, boolean, atau campuran dari beberapa tipe data.
nama_mahasiswa = ["Budi", "Ani", "Citra"]
nilai = [80, 90, 75]
data_campuran = ["Budi", 20, True]
print(nama_mahasiswa)
print(nilai)
print(data_campuran)
Penjelasan: Variabel
nama_mahasiswa,nilai, dandata_campuransemuanya adalah list. List bisa menyimpan beberapa data sekaligus dalam satu variabel.
List juga bisa diakses menggunakan index. Sama seperti string, index pada list dimulai dari angka 0.
nama_mahasiswa = ["Budi", "Ani", "Citra"]
print(nama_mahasiswa[0])
print(nama_mahasiswa[1])
print(nama_mahasiswa[-1])
Penjelasan:
nama_mahasiswa[0]mengambil data pertama, sedangkannama_mahasiswa[-1]mengambil data terakhir.
Membuat List dengan Range
Kita bisa membuat list angka menggunakan range() lalu mengubahnya menjadi list dengan fungsi list().
angka = list(range(1, 6))
print(angka)
Output dari program di atas adalah:
[1, 2, 3, 4, 5]
Penjelasan:
range(1, 6)menghasilkan angka dari 1 sampai 5. Karenarange()belum berbentuk list, kita ubah menggunakanlist().
Kita juga bisa menentukan jarak antar angka.
angka_genap = list(range(2, 11, 2))
print(angka_genap)
Penjelasan:
range(2, 11, 2)dimulai dari 2, berhenti sebelum 11, dan naik sebanyak 2 setiap langkah.
Membuat List dari For Loop
List bisa dibuat dari hasil perulangan for. Cara ini berguna ketika isi list berasal dari proses tertentu.
kuadrat = []
for angka in range(1, 6):
kuadrat.append(angka ** 2)
print(kuadrat)
Penjelasan: Awalnya
kuadratadalah list kosong. Setiap perulangan, hasilangka ** 2ditambahkan ke dalam list menggunakan.append().
Python juga menyediakan cara yang lebih singkat, yaitu list comprehension.
kuadrat = [angka ** 2 for angka in range(1, 6)]
print(kuadrat)
Penjelasan: Kode di atas menghasilkan list yang sama, tetapi ditulis lebih ringkas.
Membuat List dengan For dan IF
Kita juga bisa menambahkan kondisi if saat membuat list. Cara ini digunakan ketika hanya data tertentu yang ingin dimasukkan.
angka_genap = []
for angka in range(1, 11):
if angka % 2 == 0:
angka_genap.append(angka)
print(angka_genap)
Penjelasan: Angka hanya dimasukkan ke list jika
angka % 2 == 0, yaitu jika angka tersebut habis dibagi 2.
Dengan list comprehension, kode tersebut bisa ditulis lebih singkat.
angka_genap = [angka for angka in range(1, 11) if angka % 2 == 0]
print(angka_genap)
Manipulasi List
List bersifat mutable, artinya isi list bisa diubah setelah dibuat. Kita bisa menambah, mengubah, dan menghapus data dari list.
materi = ["Python", "Git", "R"]
materi.append("Data Analysis")
print(materi)
materi[1] = "GitHub"
print(materi)
materi.remove("R")
print(materi)
Beberapa method list yang sering digunakan:
.append()untuk menambah data ke akhir list..insert()untuk menambah data pada index tertentu..remove()untuk menghapus data berdasarkan nilainya..pop()untuk menghapus data berdasarkan index..sort()untuk mengurutkan list..reverse()untuk membalik urutan list.
Contoh penggunaan .insert() dan .pop():
materi = ["Python", "R"]
materi.insert(1, "Git")
print(materi)
materi.pop(0)
print(materi)
Penjelasan:
.insert(1, "Git")menambahkan"Git"pada index 1..pop(0)menghapus data pada index 0.
Operasi List
List bisa digabung, diulang, dicek panjangnya, dan dicek apakah suatu data ada di dalam list.
materi_python = ["Dasar Python", "String"]
materi_lanjutan = ["List", "Dictionary"]
semua_materi = materi_python + materi_lanjutan
print(semua_materi)
print(materi_python * 2)
print(len(semua_materi))
print("String" in semua_materi)
Penjelasan: Operator
+digunakan untuk menggabungkan list, sedangkan*digunakan untuk mengulang isi list. Fungsilen()menghitung jumlah data di dalam list.
Kita juga bisa mengambil sebagian isi list menggunakan slicing.
materi = ["Dasar Python", "String", "Percabangan", "List"]
print(materi[0:2])
print(materi[2:])
print(materi[:3])
Menduplikat List
Saat menduplikat list, kita perlu berhati-hati. Jika menggunakan =, Python tidak membuat list baru, tetapi hanya membuat nama variabel baru yang mengarah ke list yang sama.
nilai_asli = [80, 90, 75]
nilai_duplikat = nilai_asli
nilai_duplikat[0] = 100
print(nilai_asli)
print(nilai_duplikat)
Penjelasan: Perubahan pada
nilai_duplikatikut mengubahnilai_aslikarena keduanya mengarah ke list yang sama.
Untuk membuat salinan list yang benar-benar baru, gunakan .copy() atau slicing.
nilai_asli = [80, 90, 75]
nilai_duplikat = nilai_asli.copy()
nilai_duplikat[0] = 100
print(nilai_asli)
print(nilai_duplikat)
Penjelasan: Dengan
.copy(), perubahan pada list duplikat tidak mengubah list asli.
Nested List atau List Bersarang
Nested list adalah list yang memiliki list lain di dalamnya. Bentuk ini sering digunakan untuk menyimpan data seperti tabel sederhana.
data_mahasiswa = [
["Budi", 80],
["Ani", 90],
["Citra", 75],
]
print(data_mahasiswa)
print(data_mahasiswa[0])
print(data_mahasiswa[0][1])
Penjelasan:
data_mahasiswa[0]mengambil baris pertama, sedangkandata_mahasiswa[0][1]mengambil nilai dari baris pertama kolom kedua.
Kita juga bisa melakukan looping pada nested list.
data_mahasiswa = [
["Budi", 80],
["Ani", 90],
["Citra", 75],
]
for mahasiswa in data_mahasiswa:
print(mahasiswa[0], mahasiswa[1])
Deep Copy pada Nested List
Untuk nested list, .copy() hanya menyalin list bagian luar. List yang ada di dalamnya masih bisa saling terhubung. Kondisi ini disebut shallow copy.
data_asli = [["Budi", 80], ["Ani", 90]]
data_duplikat = data_asli.copy()
data_duplikat[0][1] = 100
print(data_asli)
print(data_duplikat)
Penjelasan: Nilai pada
data_asliikut berubah karena list bagian dalam masih digunakan bersama oleh kedua variabel.
Untuk menyalin nested list secara aman, gunakan deepcopy() dari module copy.
from copy import deepcopy
data_asli = [["Budi", 80], ["Ani", 90]]
data_duplikat = deepcopy(data_asli)
data_duplikat[0][1] = 100
print(data_asli)
print(data_duplikat)
Penjelasan:
deepcopy()menyalin list bagian luar dan list bagian dalam. Karena itu, perubahan padadata_duplikattidak memengaruhidata_asli.
Looping List dan Enumerate
List sering digunakan bersama perulangan. Ada beberapa cara untuk melakukan looping pada list.
Looping dengan For
Cara paling sederhana adalah mengambil isi list satu per satu.
materi = ["Dasar Python", "String", "Percabangan", "List"]
for item in materi:
print(item)
Penjelasan: Variabel
itemakan berisi setiap elemen dari listmaterisecara bergantian.
Looping dengan Range
Jika kita membutuhkan index dari setiap elemen, kita bisa menggunakan range() dan len().
materi = ["Dasar Python", "String", "Percabangan", "List"]
for index in range(len(materi)):
print(index, materi[index])
Penjelasan:
range(len(materi))menghasilkan angka index dari 0 sampai panjang list dikurangi 1.
Cara lain yang lebih rapi adalah menggunakan enumerate().
materi = ["Dasar Python", "String", "Percabangan", "List"]
for index, item in enumerate(materi):
print(index, item)
Penjelasan:
enumerate()menghasilkan dua nilai sekaligus, yaitu index dan isi dari list. Cara ini biasanya lebih mudah dibaca dibandingkan menggunakanrange(len(...)).
Tuple
Tuple adalah tipe data yang mirip dengan list, tetapi isinya tidak bisa diubah setelah dibuat. Tuple ditulis menggunakan tanda kurung biasa (()).
koordinat = (10, 20)
hari = ("Senin", "Selasa", "Rabu")
print(koordinat)
print(hari[0])
Penjelasan: Tuple cocok digunakan untuk data yang sifatnya tetap, misalnya koordinat, nama hari, atau konfigurasi yang tidak ingin diubah.
Jika mencoba mengubah isi tuple, Python akan menghasilkan error.
hari = ("Senin", "Selasa", "Rabu")
hari[0] = "Minggu"
Penjelasan: Tuple bersifat immutable, sehingga data di dalamnya tidak bisa diubah seperti list.
Tuple juga bisa digunakan dalam perulangan.
hari = ("Senin", "Selasa", "Rabu")
for item in hari:
print(item)
Set
Set adalah tipe data yang digunakan untuk menyimpan kumpulan data unik. Set ditulis menggunakan kurung kurawal ({}).
angka = {1, 2, 3, 3, 4, 4}
print(angka)
Penjelasan: Set hanya menyimpan nilai unik. Karena itu, angka yang sama akan otomatis dianggap satu data saja.
Set tidak memiliki urutan index seperti list dan tuple. Artinya, kita tidak bisa mengambil data set menggunakan index.
materi = {"Python", "Git", "R"}
for item in materi:
print(item)
Set sering digunakan untuk operasi himpunan, seperti gabungan, irisan, dan selisih.
kelas_a = {"Budi", "Ani", "Citra"}
kelas_b = {"Ani", "Dina", "Eka"}
print(kelas_a | kelas_b)
print(kelas_a & kelas_b)
print(kelas_a - kelas_b)
Beberapa operasi set yang sering digunakan:
|untuk gabungan data.&untuk irisan data.-untuk selisih data.
Penjelasan: Gabungan mengambil semua data unik, irisan mengambil data yang muncul di kedua set, dan selisih mengambil data yang hanya ada pada set pertama.
Perbedaan List, Tuple, dan Set
Perbedaan utama dari list, tuple, dan set ada pada sifat data yang disimpan.
listmemiliki urutan, bisa diubah, dan boleh berisi data duplikat.tuplememiliki urutan, tidak bisa diubah, dan boleh berisi data duplikat.settidak menggunakan index, bisa diubah, tetapi hanya menyimpan data unik.
contoh_list = ["Python", "Python", "Git"]
contoh_tuple = ("Python", "Python", "Git")
contoh_set = {"Python", "Python", "Git"}
print(contoh_list)
print(contoh_tuple)
print(contoh_set)
Penjelasan:
listdantupletetap menyimpan data duplikat, sedangkansethanya menyimpan nilai unik.
Latihan Singkat
Coba buat program sederhana dengan ketentuan berikut:
- Buat list
nilaiyang berisi minimal 5 angka. - Tambahkan satu nilai baru menggunakan
.append(). - Buat list baru yang berisi nilai di atas 75 menggunakan
fordanif. - Tampilkan isi list menggunakan
for loop. - Tampilkan index dan isi list menggunakan
enumerate(). - Buat nested list berisi nama mahasiswa dan nilai.
- Duplikat nested list menggunakan
deepcopy(), lalu ubah salah satu nilainya. - Buat tuple berisi nama hari.
- Buat set berisi nama mata kuliah, lalu coba masukkan data yang sama lebih dari satu kali.