Daftar Python

Python memiliki jenis daftar bawaan yang bagus bernama "list". Literal daftar ditulis dalam tanda kurung siku [ ]. Daftar berfungsi mirip dengan string -- gunakan fungsi len() dan tanda kurung siku [ ] untuk mengakses data, dengan elemen pertama di indeks 0. (Lihat dokumen daftar python.org resmi.)

  colors = ['red', 'blue', 'green']
  print(colors[0])    ## red
  print(colors[2])    ## green
  print(len(colors))  ## 3

daftar string 'merah' 'biru 'hijau'

Tugas dengan = pada daftar tidak membuat salinan. Sebagai gantinya, penetapan membuat dua variabel mengarah ke satu daftar di memori.

  b = colors   ## Does not copy the list

kedua warna dan b menunjuk ke satu daftar

"Daftar kosong" hanyalah sepasang tanda kurung kosong [ ]. Tanda '+' berfungsi untuk menambahkan dua daftar, jadi [1, 2] + [3, 4] menghasilkan [1, 2, 3, 4] (ini seperti + dengan string).

UNTUK dan IN

Konstruksi *for* dan *in* Python sangat berguna, dan penggunaan pertamanya 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 mengetahui jenis benda yang ada dalam daftar, gunakan nama variabel dalam loop yang menangkap informasi tersebut, seperti "num", atau "name", atau "url". Karena kode Python tidak memiliki sintaksis lain untuk mengingatkan Anda tentang jenis, nama variabel adalah cara utama bagi Anda untuk menjaga apa yang terjadi. (Ini sedikit menyesatkan. Saat mendapatkan lebih banyak eksposur ke python, Anda akan melihat referensi ke petunjuk jenis yang memungkinkan Anda menambahkan informasi pengetikan ke definisi fungsi. Python tidak menggunakan petunjuk jenis ini saat menjalankan program Anda. Fungsi ini digunakan oleh program lain seperti IDE (lingkungan pengembangan terintegrasi) dan alat analisis statis seperti linter/pemeriksa jenis untuk memvalidasi apakah fungsi Anda dipanggil dengan argumen yang kompatibel.)

Konstruksi *in* sendiri adalah cara mudah untuk menguji apakah suatu elemen muncul dalam daftar (atau koleksi lainnya) -- value in collection -- menguji apakah nilai berada dalam koleksi, menampilkan Benar/Salah.

  list = ['larry', 'curly', 'moe']
  if 'curly' in list:
    print('yay') ## yay

Konstruksi for/in sangat umum digunakan dalam kode Python dan bekerja pada tipe data selain daftar, jadi Anda hanya perlu menghafal sintaksnya. Anda mungkin memiliki kebiasaan dari bahasa lain di mana Anda mulai melakukan iterasi secara manual pada koleksi, di mana di Python Anda hanya harus menggunakan for/in.

Anda juga dapat menggunakan for/in untuk mengerjakan {i>string<i}. String berfungsi seperti daftar karakternya, jadi 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) menghasilkan a, a+1, ... b-1 -- sampai tetapi tidak termasuk angka terakhir. Kombinasi for-loop dan fungsi range() memungkinkan Anda membuat loop for numerik yang tradisional:

  ## print the numbers from 0 through 99
  for i in range(100):
    print(i)

Ada varian xrange() yang menghindari biaya membangun seluruh daftar untuk kasus yang sensitif terhadap kinerja (di Python 3, range() akan memiliki perilaku kinerja yang baik dan Anda bisa melupakan xrange()).

Loop Sementara

Python juga memiliki standar if-loop, dan pernyataan *break* dan *continue* berfungsi seperti di C++ dan Java, yang mengubah arah loop terdalam. Loop for/in di atas memecahkan kasus umum iterasi pada setiap elemen dalam daftar, tetapi loop sementara 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

Mencantumkan Metode

Berikut beberapa metode daftar umum lainnya.

  • list.append(elem) -- menambahkan satu elemen ke akhir daftar. Error umum: tidak menampilkan daftar baru, tetapi hanya mengubah aslinya.
  • list.insert(index, elem) -- menyisipkan elemen pada indeks yang ditentukan, menggeser elemen ke kanan.
  • list.extend(list2) menambahkan elemen dalam list2 ke akhir daftar. Menggunakan + atau += pada daftar mirip dengan menggunakan expand().
  • list.index(elem) -- menelusuri elemen yang diberikan dari awal daftar dan mengembalikan indeksnya. Menampilkan ValueError jika elemen tidak muncul (gunakan "in" untuk memeriksa tanpa ValueError).
  • list.remove(elem) -- menelusuri instance pertama dari elemen yang diberikan dan menghapusnya (melemparkan ValueError jika tidak ada)
  • list.sort() -- mengurutkan daftar di tempat (tidak mengembalikannya). (Fungsi sort() yang ditampilkan nanti lebih disukai.)
  • list.reverse() -- membalikkan daftar di tempatnya (tidak mengembalikannya)
  • list.pop(index) -- menghapus dan mengembalikan elemen pada indeks yang diberikan. Menampilkan elemen paling kanan jika indeks dihilangkan (kira-kira kebalikan dari penambahan()).

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, metode tersebut 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]

Pembuatan Daftar

Salah satu pola yang umum adalah memulai daftar sebagai daftar kosong [], lalu menggunakanadd() atau expand() 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 dapat digunakan untuk mengubah sub-bagian dari 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 soal dalam list1.py yang tidak menggunakan pengurutan (dalam Latihan Dasar).