List Lanjutan - Python Collection

List adalah heterogeneous mutable sequence. List sudah dibahas sebelumnya secara sekilas, disini akan dibahas lebih detail seperti bagaimana menambah dan mengubah isi list. Enough talk.. mari kita langsung ke REPL.

Pertama kita akan buat list dari string dengan menggunakan method split. Lalu mengakses isi list dengan menggunakan index (python adalah zero based index).

Kita juga dapat melakukan indexing negatif, mengakses list dari akhir list. Untuk negatif indexing one based indexing (karena tidak ada perbedaan 0 dan -0)

>>> s = "show how to index into sequences".split()
>>> s
['show', 'how', 'to', 'index', 'into', 'sequences']
>>> s[4]
'into'
>>> s[-5]
'how'
>>>




Slicing adalah, cara mengakses list dengan memberikan parameter start dan stop index, keduanya adalah opsional. Slicing dapat menggunakan negatif indexing juga. Selain itu juga kita bisa hanya memasukan paramater start saja.

Contoh kita hanya ingin mengambil isi list tanpa awal dan akhir kita tidak perlu repot repot menggunakan len(variablelist)-1, tapi cukup menggunakan s[1:-1], ini akan mengambil list tanpa mengaambil isi awal dan akhir

>>> s[1:4]
['how', 'to', 'index']
>>> s[1:-1]
['how', 'to', 'index', 'into']
>>> s[3:]
['index', 'into', 'sequences']





Slicing ini dapat digunakan untuk mencopy isi list ke objek list baru. Caranya dengan memberikan blank start dan stop index.

>>> new_copy_list = s[:]
>>> new_copy_list is s
False
>>> new_copy_list == s
True

Untuk mencopy list, masih ada cara lain yang lebih dapat dimengerti dan terbaca maksudnya. Dengan menggunakan metode copy atau list constructor.

>>> u = s.copy()
>>> u
['show', 'how', 'to', 'index', 'into', 'sequences']
>>> u is s
False
>>> u == s
True
>>> v = list(s)
>>> v
['show', 'how', 'to', 'index', 'into', 'sequences']
>>> v is s
False
>>> v == s
True

Perlu diperhatikan, ketiga metode copy diatas hanya membuat objek baru untuk list teratas saja, proses copy adalah shallow . Apa itu itu copy shallow, silakan click disini

List searching

Mencari elemen dalam list cukup mudah dilakukan.

list.index("kata yang hendak dicari")

Return value adalah integer dari index, namun perlu diperhatikan juga bila kita melakukan searching kata yang tidak akan terjadi error. Kita harus melakukan error handling.

Kita juga dapat menghitung jumlah kata tertentu, dengan metode count.

list.count('kata yang hendak dihitung')

Penggunaan in operator digunakan untuk memeriksa apakah suatu item terdapat dalam list.



>>> w = "the quick brown fox jumps over the lazy dog".split()
>>> w
['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
>>> i = w.index('fox')
>>> i
3
>>> w[i]
'fox'
>>> w.index('cat')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: 'cat' is not in list
>>> w.count('the')
2
>>> 44 in [1, 4, 3, 22, 77]
False
>>> 44 not in [1, 4, 2, 22, 77]
True

Delete List Item

Untuk menghapus isi list cukup mudah, menggunakan beberapa metode del atau remove.


  • del list[index]
  • list.remove('kata yang ingin dihapus')

kita juga bisa mevariasikan dengan menggunakan metode searching diatas dimana returnnya berupa index yang menjadi input untuk fungsi del.

Harus diperhatikan bila kita menghapus list namun item yang dimaksud tidak ada akan mengembalikan error. Diperlukan error handling saat melakukan penghapusan item list.

>>> u = "saya suka berlibur ke pulau bali yang eksotis".split()
>>> u
['saya', 'suka', 'berlibur', 'ke', 'pulau', 'bali', 'yang', 'eksotis']
>>> del u[3]
>>> u
['saya', 'suka', 'berlibur', 'pulau', 'bali', 'yang', 'eksotis']
>>> u.remove('saya')
>>> u
['suka', 'berlibur', 'pulau', 'bali', 'yang', 'eksotis']
>>> del u[u.index('eksotis')]
>>> u
['suka', 'berlibur', 'pulau', 'bali', 'yang']
>>> u.remove('jakarta')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: list.remove(x): x not in list

Menambah Item (Insert) List

Untuk menambahkan item pada list gunakan syntaks seperti berikut

list.insert(index, "kata yang ingin disisipkan")

Perlu diperhatikan, index adalah zero based index.

List juga dapat kita ubah menjadi str dengan menggunakan fungsi join, pada contoh dibawah item pada list digabungkan dengan spasi " " sebagai separator.


>>> a = "Saya gak sengaja alam semesta".split()
>>> a
['Saya', 'gak', 'sengaja', 'alam', 'semesta']
>>> a.insert(3, "mengacaukan")
>>> a
['Saya', 'gak', 'sengaja', 'mengacaukan', 'alam', 'semesta']
>>> ' '.join(a)
'Saya gak sengaja mengacaukan alam semesta'

Concatenate / Menggabungkan List


  • Concatenate menggunakan operator +
  • Untuk extend, menggunakan operator += atau metode extend()


>>> a = [1, 2]
>>> b = [3, 4]
>>> c = a + b
>>> c
[1, 2, 3, 4]
>>> c += [5, 6]
>>> c
[1, 2, 3, 4, 5, 6]
>>> c.extend([7, 8, 9])
>>> c
[1, 2, 3, 4, 5, 6, 7, 8, 9]


List reverse dan sorting 

Reverse hanya membalikan urutan item dari list tanpa peduli dengan order, sementara sorting adalah mengatur order dari list, apakah itu ascending atau descending.

Untuk metode sort menerima 2 argument, key dan reverse. Jika reverse=True maka descending dan sebaliknya.

sorted() adalah  built-in function untuk melakukan sorting pada iterable objek dan mengembalikannya sebagai list

reversed() built-function untuk membalikan isi item dari list, return dari fungsi ini adalah reserved_list, perlu menggunakan constructor list() untuk melihat isinya.

>>> a = [1, 2, 5, 3]
>>> a.reverse()
>>> a
[3, 5, 2, 1]
>>> b = [23, 12, 33, 56, 21, 44]
>>> b.sort()
>>> b
[12, 21, 23, 33, 44, 56]
>>> b.sort(reverse=True)
>>> b
[56, 44, 33, 23, 21, 12]
>>> x = [4, 3, 7, 2, 10]
>>> y = sorted(x)
>>> y
[2, 3, 4, 7, 10]
>>> r = [3, 2, 4, 1]
>>> s = reversed(r)
>>> s
<list_reverseiterator 0x00594370="" at="" object="">
>>> list(s)
[1, 4, 2, 3]

List Comprehension

Tujuan comprehension adalah agar kode program lebih ringkas dan mudah terbaca. Namun kadang malah membuat orang membacanya menjadi bingung bila digunakan terlalu extensive.

Berikut contoh perbandingan membuat list dengan for loop dan list comprehension.


import random


# membuat list dengan for loop
our_list = []
for value in range(0,20):
    our_list.append(random.randint(0,100))

print(our_list)

# membuat list dengan list comprehension

new_list = [value for value in range(0,20)]     # [ value which is being inserted into my list -- for loop ]

new_list = [random.randint(0,100) for value in range(0,20)]

print(new_list)


Berikut contoh penggunaan if pada list comprehension

num = [value for value in range(-5,5)]
print(num)

positive_num = [value for value in num if value > 0]
print(positive_num)
List Lanjutan - Python Collection List Lanjutan - Python Collection Reviewed by noname needed on June 06, 2018 Rating: 5

No comments:

Powered by Blogger.