LIST DAN TUPLES Kuliah Metode Komputasi, Minggu ke 3 Thursday, March 3, 16 STRUKTUR DATA • Dalam data kuliah ini akan dijelaskan konsep baru, yaitu struktur • Struktur data adalah koleksi dari elemen-elemen data (misal, karakter, bilangan, atau struktur data yang lain), dengan urutan tertentu • Struktur data paling sederhana di dalam Python adalah sekuen (urutan). setiap komponen dari sekuen, diberi identitas nomer urutan, yang menyatakan posisi, yang disebut indeks. Thursday, March 3, 16 STRUKTUR DATA • Di dalam Python, indeks pertama diberi nomer 0 (nol) • Indeks kedua, 2 adalah 1, indeks ke 3 adalah 2 dst • Python memiliki 6 tipe sekuen yang sudah build-in, dan kita akan belajar 2 tipe saja hari ini, yaitu list dan tuple • Perbedaan mendasar keduanya adalah, list dapat diubah isi dan urutannya, sedangkan tuple tidak bisa ! • Biasanya Thursday, March 3, 16 tuple digunakan untuk keperluan teknis • Contoh list • >>> wiwit = [ ‘Wiwit Suryanto’, 42] • >>> haidar = [‘Haidar Pramudito, 11] • >>> database = [wiwit haidar] • >>> database • [[‘Wiwit Thursday, March 3, 16 Suryanto’, 42],[‘Haidar Pramudito’, 11]] OPERASI DASAR SEKUEN • Ada banyak operasi dasar untuk sebuah sekuen, diantaranya • (1) peng-indeks-an • (2) pemotongan • (3) penambahan • (4) pengalian • (5) cek keanggotaan Thursday, March 3, 16 PENG-INDEKS-AN • Setiap elemen dalam sebuah sekuen adalah (secara otomatis) dinomeri, dari nol dan seterusnya. • Kita dapat mengakses secara individual, dengan memberi identitas nomer tersebut • >>> salam = ‘Selamat Pagi’ • >>> salam[0]= • >>>’S’ • >>> salam[10] = • >>>’g’ Thursday, March 3, 16 PENG-INDEKS-AN • >>> salam[10] = • >>>’g’ • >>> Perbuatan seperti diatas disebut peng-indeks-an. • Jika kita menggunakan bilangan negatif, artinya, Python megurutkan dari belakang • >>> salam[-1] • >>>’i’ Thursday, March 3, 16 PENG-INDEKS-AN • Di dalam Python, pengindeksan dapat langsung dilakukan saat itu juga ketika kita memanggil sebuah fungsi, misalnya kita akan mengambil bilangan ke empat dalam tahun, • >>> keempat = raw_input(‘Tahun : ‘)[3] • >>> Tahun: 2015 • >>> keempat • >>> ‘5’ Thursday, March 3, 16 PENG-INDEKS-AN • Contoh, menerjemahkan inggris • > Tahun : 1974 •> Bulan: 8 •> Hari : 16 • > August Thursday, March 3, 16 16th, 1974 tanggal, bulan tahun dalam bahasa LISTING PROGRAM Thursday, March 3, 16 PENGIRISAN, SLICING • Untuk mengakses sejumlah elemen, digunakan range indeks dengan tanda titik2, : • >>> tag = ‘<a href=”http://www.python.org”> Python website </a>’ • >>> tag[9:30] • ‘http://www.python.org’ • tag[32:-4] • ‘Python web site’ Thursday, March 3, 16 PENGIRISAN, SLICING • Mudah, bukan? • Jadi, perhatikan sekali lagi bahwa indeks pertama adalah elemen yang hendak diikutkan dalam irisan • bilangan = [1,2,3,4,5,6,7,8,9,10] • bilangan[3:6] • [4,5,6] • bilangan[0:1] • [1] Thursday, March 3, 16 PENGIRISAN, SLICING Thursday, March 3, 16 CONTOH • Buatlah program untuk mendapatkan nama domain dari link website yang di-inputkan • Masukkan • Nama •. •. Thursday, March 3, 16 nama tautan (URL) : http://www.google.com domain : google LONGER STEPS • bilangan[0:10:1] • [1,2,3,4,5,6,7,8,9,10] • pada contoh diatas, ditambah satu bilangan di belakang sendiri, yaitu ukuran langkahnya, dalam hal ini 1 • bilangan[0,10,2] • [1,3,5,7,9] • bilangan[::4] • [1,5,9] Thursday, March 3, 16 • Ukuran langkah tidak boleh nol, tapi boleh negatif • bilangan[8:3:-1] • [9,8,7,6,5] • bilangan[10:0,-2] • [10,8,6,4,2] • bilangan[:5:-2] Thursday, March 3, 16 MENAMBAH URUTAN • [1,2,3]+[4,5,6] • [1,2,3,4,5,6] • ‘Halo, ‘ + ‘dunia!’ • ‘Hallo, dunia!’ • [1,2,3] + ‘dunia’ • TypeError Thursday, March 3, 16 (Jadi dilarang menggabungkan list dan string) PERKALIAN • ‘python’ * 5 • pythonpythonpythonpythonpython • [42] * 10 • [42, 42, 42, 42, 42, 42, 42, 42, 42, 42] • urutan = [kosong] * 9 • urutan • [kosong, kosong, kosong, kosong, kosong, kosong, kosong, kosong, kosong] Thursday, March 3, 16 LATIHAN Thursday, March 3, 16 KEANGGOTAAN • >>> permission = ‘rw’ • >>> ‘w’ in permission • True • >>> ‘x’ in • False Thursday, March 3, 16 permission • # periksa nama pemakai dan kode PINnya • database = [ • [‘albert’, ‘1234’], • [‘dilbert’, ‘4242’], • [‘smith’, ‘7524’], • [‘jones’, ‘9843’] • ] • username = raw_input(‘Nama pengguna : ‘) • pin = raw_input(‘kode PIN :’) • if [username, pin] in database: print ‘Akses diterima’ Thursday, March 3, 16 PANJANG, MIN, MAX • bilangan = [100, 34, 678] • len(bilangan) • 3 • min(bilangan) • 34 • max(bilangan) • 678 • max(2,3) • 3 • min(9,3,2,5) • 2 Thursday, March 3, 16 FUNGSI LIST • Sering kali kita memerlukan untuk mengubah sebuah string menjadi list. Dalam Python ada fungsi list • >>> list(‘Hello’) • [‘H’, ‘e’, ‘l’, ‘l’, ‘o’] • Sebaliknya, list dari beberapa karakter dapat diubah menjadi string dengan perintah >>> ‘ ‘.join(bebarapakarakter) • Thursday, March 3, 16 OPERASI DASAR LIST • mengubah list • >>> x = [1, 1, 1] • >>> x[1] = 2 • >>> x • [1, 2, 1] • menghapus elemen • >>> nama = [‘wiwit’, ‘iwan’, ‘nukman’, ‘afif ’,”Nu’ma”] • >>> del nama[4] • >>> nama • [‘wiwit’, ‘iwan’, ‘nukman’,‘afif ’] Thursday, March 3, 16 MENETAPKAN KARAKTER • Pengirisan merupakan fitur canggih dalam Python, dan menjadi semakin lebih baik karena kita dapat menetapkan sebuah karakter atau nilai di pada irisan. Dalam Matlab hal ini bisa dilakukan, namun agak tricky ... • >>> nama = list(‘Pascal’) • >>> nama[1:]=list(‘ython’] • >>> nama • [‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’] • >>> bilangan = [1, 5] • >>> bilangan[1:1] = [2, 3, 4] • >>> bilangan • >>> [1, 2, 3, 4,5] • >>> bilangan[1:4]=[] • [1, 5] Thursday, March 3, 16 METODE-METODE LIST • Dalam Python, metode adalah sebuah fungsi, yang terikat oleh sebuah obyek, baik itu berupa list, bilangan, string atau apapun, defaultnya dibelakang • Cara memanggilnya: obyek.method(argumen) • metode 1, append • lst=[1, 2, 3] • lst.append(4) • lst • [1, 2, 3, 4] Thursday, March 3, 16 METODE-METODE LIST • metode 2, count • menghitung kejadian dari sebuah elemen dalam list • >>>[‘to’, ‘be’,’or’,‘not’,’to’,’be’].count(‘to’) • 2 • >>> x = [[1, 2],1, 1, [2, 1, [1, 2]]] • >>> x.count(1) • 2 • >>> x.count([1, 2]) • 1 Thursday, March 3, 16 METODE-METODE LIST • metode 3, extend • meng-ekstensi list aslinya • >>> a = [1, 2, 3] • >>> b = [4, 5, 6] • >>> a.extend(b) • >>>a • [1, 2, 3, 4, 5, 6] • atau dapat juga dengan assigning • >>> a[len(a):]=b • [1, 2, 3, 4, 5, 6] Thursday, March 3, 16 METODE-METODE LIST • metode 4, index • mencari indeks dari kejadian dalam list • >>> moto = [‘satu’, ‘nusa’,satu’,‘bangsa’] • >>> moto.index(‘nusa’) •1 Thursday, March 3, 16 METODE-METODE LIST • metode 5, insert • menyisipkan obyek di dalam list • >>> bilangan = [1, 2, 3, 5, 6, 7] • >>> bilangan.insert(3,‘empat’) • >>> bilangan • [1, 2, 3, ‘empat’, ‘5’,’6’,’7’] • keren, huh? Thursday, March 3, 16 METODE-METODE LIST • metode 6, pop • menghilangkan elemen di dalam list. Defaultnya elemen terbelaaaaakang. • >>> x = [1, 2, 3] • >>> x.pop() • 3 • >>> x • [1, 2] • >>> x.pop(0) • 1 • >>> x • [2] Thursday, March 3, 16 METODE-METODE LIST • metode 7, remove • menghilangkan elemen di dalam list yang muncul pertama kali. • >>> x = [‘to’,’be’,‘or’,‘not’,’to’,‘be’] • >>> x.remove(‘be’) • >>> x • [‘to’,’or’,‘not’, ‘to’, ‘be’] Thursday, March 3, 16 METODE-METODE LIST • metode 8, reverse • membalik elemen di dalam list • >>> x = [1, 2, 3] • >>> x.reverse() • >>> x • [3, 2, 1] Thursday, March 3, 16 METODE-METODE LIST • metode 9, sort • mengurutkan elemen di dalam list • >>> x = [4, 6, 2, 1, 7, 9] • >>> x.sort() • >>> x • [1, 2, 4, 6, 7, 9] • Namun awas ! Thursday, March 3, 16 METODE-METODE LIST • metode 9a sort • >>> x = [‘I’,‘want’,’to’] • >>> x.sort(key=len) • >>>x • [‘I’,’to’,‘want’] • >>> x = [4,6,2,1,7,9] • >>> x.sort(reverse=True) • >>> x • [9,7,6,4,2,1] Thursday, March 3, 16 TUPLE, URUTAN TAK TERGANTI • sama dengan urutan, namun tak dapat diganti. • nulisnya sederhana, hanya menulis berurutan dengan koma • jadilah tuple ! • >>> 1, 2, 3 • (1, 2, 3) • Fungsi tuple >>> tuple([1, 2, 3]) • (1, 2, 3). Jadi, untuk apakah tuple itu? Thursday, March 3, 16 Thursday, March 3, 16