Python memiliki jenis daftar bawaan yang bagus bernama "list". Literal daftar ditulis dalam tanda kurung siku [ ]. Daftar bekerja mirip dengan string - gunakan fungsi len() dan tanda kurung siku [ ] untuk mengakses data, dengan elemen pertama pada indeks 0. (Lihat dokumen daftar python.org resmi.)
colors = ['red', 'blue', 'green'] print(colors[0]) ## red print(colors[2]) ## green print(len(colors)) ## 3
Penetapan dengan = pada daftar tidak akan membuat salinan. Sebagai gantinya, penetapan membuat kedua variabel mengarah ke satu daftar dalam memori.
b = colors ## Does not copy the list
"Daftar kosong" hanyalah sepasang tanda kurung kosong [ ]. '+' berfungsi untuk menambahkan dua daftar, jadi [1, 2] + [3, 4] menghasilkan [1, 2, 3, 4] (ini seperti + dengan {i>string<i}).
FOR dan IN
Konstruksi *for* dan *in* Python sangat berguna, dan penggunaan pertama yang akan kita lihat adalah dengan daftar. Konstruksi *untuk* -- for var in list
-- adalah cara mudah untuk melihat setiap elemen dalam daftar (atau koleksi lainnya). Jangan menambahkan atau menghapus dari daftar selama iterasi.
squares = [1, 4, 9, 16] sum = 0 for num in squares: sum += num print(sum) ## 30
Jika Anda tahu jenis item yang ada dalam daftar, gunakan nama variabel dalam loop yang mengambil informasi tersebut seperti "num", atau "name", atau "url". Karena kode Python tidak memiliki sintaks lain untuk mengingatkan Anda tentang jenis, nama variabel Anda adalah cara utama bagi Anda untuk menjaga apa yang sedang terjadi. (Ini sedikit menyesatkan. Seiring Anda mendapatkan lebih banyak eksposur ke python, Anda akan melihat referensi ke petunjuk jenis yang memungkinkan Anda menambahkan informasi mengetik ke definisi fungsi. Python tidak menggunakan petunjuk jenis ini saat menjalankan program Anda. Fungsi ini digunakan oleh program lain seperti IDE (integrated development environment) dan alat analisis statis seperti linters/type checker untuk memvalidasi apakah fungsi Anda dipanggil dengan argumen yang kompatibel.)
Konstruksi *in* itu sendiri adalah cara mudah untuk menguji apakah elemen muncul dalam daftar (atau koleksi lainnya) -- value in collection
-- menguji apakah nilai ada dalam koleksi, yang menampilkan True/False.
list = ['larry', 'curly', 'moe'] if 'curly' in list: print('yay') ## yay
Konstruksi for/in sangat umum digunakan dalam kode Python dan berfungsi pada jenis data selain daftar, jadi Anda hanya perlu menghafal sintaksisnya. Anda mungkin memiliki kebiasaan dari bahasa lain yang memulai iterasi koleksi secara manual, sedangkan di Python Anda hanya perlu menggunakan for/in.
Anda juga dapat menggunakan for/in untuk menangani string. String ini bertindak seperti daftar karakternya, sehingga for ch in s: print(ch)
mencetak semua karakter dalam string.
Rentang
Fungsi range(n) menghasilkan angka 0, 1, ... n-1, dan range(a, b) menampilkan a, a+1, ... b-1 -- hingga, tetapi tidak termasuk angka terakhir. Kombinasi fungsi for-loop dan range() memungkinkan Anda untuk membangun numerik for loop tradisional:
## print the numbers from 0 through 99 for i in range(100): print(i)
Ada varian xrange() yang menghindari biaya pembuatan seluruh daftar untuk kasus yang sensitif terhadap performa (di Python 3, range() akan memiliki perilaku performa yang baik dan Anda dapat melupakan xrange()).
Saat Loop
Python juga memiliki while-loop standar, dan pernyataan *break* dan *continue* berfungsi seperti di C++ dan Java, yang mengubah jalur loop terdalam. Loop for/in di atas memecahkan kasus umum iterasi pada setiap elemen dalam daftar, tetapi loop while memberi Anda kontrol penuh atas nomor indeks. Berikut adalah loop sementara yang mengakses setiap elemen ke-3 dalam daftar:
## Access every 3rd element in a list i = 0 while i < len(a): print(a[i]) i = i + 3
Metode Daftar
Berikut beberapa metode daftar umum lainnya.
- list.append(elem) -- menambahkan satu elemen ke akhir daftar. Error umum: tidak menampilkan daftar baru, hanya mengubah daftar asli.
- list.insert(index, elem) -- menyisipkan elemen pada indeks yang diberikan, dengan menggeser elemen ke kanan.
- list.extend(list2) menambahkan elemen dalam list2 ke bagian akhir daftar. Menggunakan + atau += pada daftar mirip dengan menggunakan extend().
- list.index(elem) -- mencari elemen yang diberikan dari awal daftar dan mengembalikan indeksnya. Menampilkan ValueError jika elemen tidak muncul (gunakan "in" untuk memeriksa tanpa ValueError).
- list.remove(elem) -- mencari kemunculan pertama dari elemen yang diberikan dan menghapusnya (melemparkan ValueError jika tidak ada)
- list.sort() -- mengurutkan daftar pada tempatnya (tidak mengembalikannya). (Fungsi sorted() yang ditampilkan nanti lebih disukai.)
- list.reverse() -- membalikkan daftar di tempat (tidak menampilkannya)
- list.pop(index) -- menghapus dan menampilkan elemen pada indeks tertentu. Menampilkan elemen paling kanan jika indeks dihilangkan (kira-kira kebalikan dari append()).
Perhatikan bahwa ini adalah *metode* pada objek daftar, sedangkan len() adalah fungsi yang menggunakan daftar (atau string atau apa pun) sebagai argumen.
list = ['larry', 'curly', 'moe'] list.append('shemp') ## append elem at end list.insert(0, 'xxx') ## insert elem at index 0 list.extend(['yyy', 'zzz']) ## add list of elems at end print(list) ## ['xxx', 'larry', 'curly', 'moe', 'shemp', 'yyy', 'zzz'] print(list.index('curly')) ## 2 list.remove('curly') ## search and remove that element list.pop(1) ## removes and returns 'larry' print(list) ## ['xxx', 'moe', 'shemp', 'yyy', 'zzz']
Error umum: perhatikan bahwa metode di atas tidak *menampilkan* daftar yang diubah, tetapi hanya mengubah daftar asli.
list = [1, 2, 3] print(list.append(4)) ## NO, does not work, append() returns None ## Correct pattern: list.append(4) print(list) ## [1, 2, 3, 4]
Mencantumkan Build Up
Salah satu pola yang umum adalah memulai daftar sebagai daftar kosong [], lalu menggunakan add() atau perluasan() untuk menambahkan elemen ke dalamnya:
list = [] ## Start as the empty list list.append('a') ## Use append() to add elements list.append('b')
Mencantumkan Slice
Slice bekerja pada daftar seperti halnya string, dan juga bisa digunakan untuk mengubah sub-bagian daftar.
list = ['a', 'b', 'c', 'd'] print(list[1:-1]) ## ['b', 'c'] list[0:2] = 'z' ## replace ['a', 'b'] with ['z'] print(list) ## ['z', 'c', 'd']
Latihan: list1.py
Untuk mempraktikkan materi di bagian ini, coba masalah di list1.py yang tidak menggunakan pengurutan (di Latihan Dasar).