Daftar Python

Python memiliki jenis daftar bawaan yang bagus bernama "list". Literal daftar ditulis dalam tanda kurung siku [ ]. Daftar bekerja mirip dengan {i>string<i} - 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 &#39;merah&#39; &#39;biru &#39;hijau&#39;

Penetapan dengan tanda = pada daftar tidak menghasilkan salinan. Sebagai gantinya, penetapan membuat dua variabel mengarah ke satu daftar dalam memori.

  b = colors   ## Does not copy the list

warna dan b menunjuk ke satu daftar

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

UNTUK dan DI

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 menambah 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 elemen 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. Saat Anda mendapatkan lebih banyak paparan terhadap {i>python<i}, Anda akan melihat referensi ke petunjuk jenis yang memungkinkan Anda menambahkan pengetikan informasi ke definisi fungsi Anda. Python tidak menggunakan petunjuk jenis ini saat dijalankan program Anda. Mereka digunakan oleh program lain seperti IDE ({i>integrated development environment<i}) dan alat analisis statis seperti linter/Pemeriksa Jenis untuk memvalidasi apakah fungsi Anda dipanggil dengan argumen yang kompatibel.)

Konstruksi *in* itu sendiri merupakan cara mudah untuk menguji apakah elemen muncul dalam daftar (atau koleksi lainnya) -- value in collection -- menguji apakah nilai ada 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 mengerjakan tipe data selain daftar, jadi Anda hanya perlu mengingat 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 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) mengembalikan 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 membangun seluruh daftar untuk kasus kinerja yang sensitif (di Python 3, range() akan memiliki perilaku kinerja yang baik dan Anda bisa melupakan xrange()).

Saat Loop

Python juga memiliki standar when-loop, dan pernyataan *break* serta *continue* berfungsi seperti di C++ dan Java, sehingga mengubah arah loop terdalam. Loop for/in di atas memecahkan kasus umum untuk 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

Metode Daftar

Berikut adalah beberapa metode daftar umum lainnya.

  • list.append(elem) -- menambahkan satu elemen ke akhir daftar. Error umum: tidak menampilkan daftar baru, hanya mengubah daftar yang asli.
  • list.insert(index, elem) -- menyisipkan elemen pada indeks yang diberikan, menggeser elemen ke kanan.
  • list.extend(list2) menambahkan elemen dalam list2 ke bagian akhir daftar. Menggunakan + atau += pada daftar mirip dengan menggunakan extended().
  • 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 sequence() 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 add()).

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 dimodifikasi, metode tersebut hanya mengubah daftar aslinya.

  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 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 soal di list1.py yang tidak menggunakan pengurutan (dalam Latihan Dasar).