Struktur Data adalah struktur yang dapat menyimpan dan mengorganisasikan kumpulan data. Berikut struktur data yang ada dalam Python.
List adalah struktur data yang menyimpan koleksi data terurut, anda dapat menyimpan sequence / rangkaian item menggunakan list.
Item dalam list ditutup menggunakan kurung siku [] (list literal). Setelah list dibuat anda bisa menambah, mengurangi, dan mencari item pada list. Karena kita dapat menambah dan mengurangi item, list bersifat mutable.
List adalah contoh penggunaan obyek dan class. Ketika kita menggunakan variabel i dan mengisinya dengan nilai integer 5, sama dengan kita membuat obyek (instance) i dari class (tipe) int. Anda dapat membaca help(int) untuk membaca dokumentasi class integer.
Class mempunyai method, fungsi yang didefinisikan dalam class. Anda bisa menggunakan method ini pada obyek class tersebut. Sebagai contoh, Python menyediakan method append untuk class list. contoh_list.append('item 1') akan menambahkan string 'item 1' kedalam list contoh_list. Perhatikan notasi titik untuk mengakses method pada obyek.
Class juga mempunyai field yang sama halnya variabel yang digunakan hanya untuk class. Anda bisa menggunakan variabel / nama ini pada obyek class tersebut.
# lat25.py
daftar_belanja = ['apel', 'mangga', 'wortel', 'pisang']
print 'saya punya %s barang yang akan dibeli' % len(daftar_belanja)
print 'barang tersebut:'
for barang in daftar_belanja:
print barang,
print 'saya harus membeli beras'
daftar_belanja.append('beras')
print 'daftar belanja sekarang :', daftar_belanja
print 'saya akan mengurutkan daftar belanja saya'
daftar_belanja.sort()
print 'daftar belanja setelah diurutkan', daftar_belanja
print 'barang yang harus saya beli pertama', daftar_belanja[0]
barang_pertama = daftar_belanja[0]
del daftar_belanja[0]
print 'saya membeli', barang_pertama
print 'daftar belanja sekarang:', daftar_belanja
Tuple mirip dengan list namun tuple bersifat immutable (tidak bisa diubah setelah didefinisikan).
Tuple dibuat dengan menspesifikasikan item tuple dipisahkan menggunakan tanda koma dan opsional diapit dengan tanda kurung.
# lat26.py
kebun_binatang = ('ular python', 'gajah', 'pinguin')
print 'jumlah binatang yang ada di kebun binatang :', len(kebun_binatang)
kebun_binatang_baru = 'monyet', 'unta', kebun_binatang
print 'jumlah kandang di kebun binatang baru:', len(kebun_binatang_baru)
print 'binatang yang ada di kebun bintatang baru:', kebun_binatang_baru
print 'binatang dari kebun binatang lama:', kebun_binatang_baru[2]
print 'binatang terakhir dari kebun binatang lama:', kebun_binatang_baru[2][2]
jumlah_binatang = len(kebun_binatang_baru) - 1 + len(kebun_binatang_baru[2])
print 'jumlah binatang yang ada di kebun binatang baru :', jumlah_binatang
Dictionary seperti buku alamat, dengan buku alamat anda bisa mencari alamat atau detail kontak hanya menggunakan nama orang yang anda cari. Kita mengasosiasikan key (nama) dengan value (detail). Catatan key harus bersifat unik, anda tidak bisa menemukan informasi yang tepat jika ada dua orang yang mempunyai nama yang sama dalam buku alamat anda.
Anda hanya bisa menggunakan obyek immutable (seperti string) untuk key/ kunci dictionary. Anda bisa menggunakan obyek mutable atau immutable untuk value dalam dictionary.
Dictionary dispesifikasikan menggunakan pasangan key dan value diapit menggunakan kurung kurawal, {key1: value1, key2: value2}.
# lat27.py
# ba, singkatan buku alamat
ba = {'guido': 'guido@python.org',
'brandon': 'brandon@rhodesmill.org',
'spammer': 'spammer@domain.com'}
print 'alamat email guido:', ba['guido']
# menghapus item
del ba['spammer']
print 'ada %s kontak di buku alamat' % len(ba)
for nama, email in ba.items():
print '%s, email: %s' % (nama, email)
# tambah entri
ba['jacob'] = 'jacob@jacobian.org'
if 'jacob' in ba:
print 'Email jacob di', ba['jacob']
List, tuple dan string adalah contoh dari sequence. Kita dapat melakukan tes keanggotaan, operasi index(akses, slicing), dan iterasi pada sequence.
# lat28.py
daftar_belanja = ['apel', 'mangga', 'wortel', 'pisang']
nama = 'budi'
print 'Barang 0 =', daftar_belanja[0]
print 'Barang 1 =', daftar_belanja[1]
print 'Barang 2 =', daftar_belanja[2]
print 'Barang 3 =', daftar_belanja[3]
print 'Barang -1 =', daftar_belanja[-1]
print 'Barang -2 =', daftar_belanja[-2]
print 'Karakter 0 =', nama[0]
# slicing pada list
print 'Barang 1 ke 3:', daftar_belanja[1:3]
print 'Barang 2 ke terakhir:', daftar_belanja[2:]
print 'Barang 1 ke -1:', daftar_belanja[1:-1]
print 'Barang dari awal ke akhir:', daftar_belanja[:]
# slicing pada string
print 'Karakter 1 ke 3:', nama[1:3]
print 'Karakter 2 ke terakhir:', nama[2:]
print 'Karakter 1 ke -1:', nama[1:-1]
print 'Karakter dari awal ke akhir:', nama[:]
Set adalah koleksi obyek yang tidak terurut. Digunakan ketika keberadaan obyek pada koleksi lebih penting daripada urutan dan berapa kali obyek muncul pada koleksi.
# lat29.py
negara = set(['brazil', 'rusia', 'indonesia'])
print 'indonesia' in negara
print 'amerika' in negara
negara2 = negara.copy()
negara2.add('korea')
print negara2.issuperset(negara)
negara.remove('rusia')
print negara2 & negara
print negara2.intersection(negara)
Jika anda membuat obyek dan mengisinya ke variabel, variabel hanya me refer ke obyek dan tidak merepresentasikan obyek itu sendiri. Nama variabel menunjuk ke bagian memori komputer dimana obyek disimpan. Hal ini dinamakan binding antara nama ke obyek.
# lat29.py
daftar_belanja = ['apel', 'mangga', 'wortel', 'pisang']
print 'assignment biasa'
daftar_saya = daftar_belanja
del daftar_belanja[0]
print 'daftar belanja:', daftar_belanja
print 'daftar saya:', daftar_saya
print 'copy obyek daftar belanja menggunakan slice [:]'
daftar_saya = daftar_belanja[:] # membuat copy
del daftar_saya[0]
print 'daftar belanja:', daftar_belanja
print 'daftar saya:', daftar_saya
Tipe atau class String mempunyai method-method untuk memudahkan operasi string.
# lat30.py
nama = 'Indonesia'
if nama.lower().startswith('ind'):
print 'Nama diawal dengan "ind"'
if 'ne' in nama:
print 'Nama berisi string "ne"'
if nama.find('done') != -1:
print 'Nama berisi string "done"'
pembatas = ', '
daftar_belanja = ['apel', 'mangga', 'wortel', 'pisang']
print pembatas.join(daftar_belanja)