2.7. List¶
Sebuah list adalah urutan nilai yang dapat diubah dan terurut. Tidak seperti string dan bytes, list dapat menampung nilai dari tipe apa pun, dan Anda dapat mengubah, menambah, atau menghapus item di tempat.
2.7.1. Membuat list¶
Kurung siku membuat literal list:
empty = []
nums = [1, 2, 3]
mixed = [1, "two", 3.0, True, None] # any types
nested = [[1, 2], [3, 4], [5, 6]] # lists of lists
Konstruktor list membangun list dari iterable apa pun:
>>> list("abc")
['a', 'b', 'c']
>>> list(range(5))
[0, 1, 2, 3, 4]
2.7.2. Panjang, pengindeksan, dan slicing¶
len() mengembalikan jumlah item. Pengindeksan dan slicing bekerja dengan cara yang sama seperti string -- posisi dimulai dari 0, indeks negatif dihitung dari akhir, dan slice di luar rentang valid secara diam-diam dipotong daripada memunculkan exception:
>>> nums = [10, 20, 30, 40, 50]
>>> len(nums)
5
>>> nums[0]
10
>>> nums[-1]
50
>>> nums[1:4]
[20, 30, 40]
Indeks positif dihitung dari depan; indeks negatif dihitung dari akhir.¶
Sintaks slice adalah singkatan untuk objek slice yang Python buat di balik layar. nums[1:4] sama dengan nums[slice(1, 4)]. Anda jarang membuatnya secara manual, tetapi slice() kadang-kadang berguna untuk menyimpan slice sebagai nilai yang dapat digunakan ulang:
head = slice(0, 3)
print(nums[head]) # [10, 20, 30]
print(letters[head]) # first three letters, same slice
2.7.3. Memodifikasi list¶
List mendukung penugasan berindeks dan sliced di tempat:
>>> nums = [10, 20, 30]
>>> nums[0] = 99
>>> nums
[99, 20, 30]
>>> nums[1:3] = [200, 300, 400] # slice can change the length
>>> nums
[99, 200, 300, 400]
Metode list yang paling umum:
list.append()-- menambahkan satu item ke akhir.list.extend()-- menambahkan setiap item dari sebuah iterable.list.insert()-- menyisipkan pada posisi tertentu.list.remove()-- menghapus kemunculan pertama dari sebuah nilai.list.pop()-- menghapus dan mengembalikan item (terakhir secara default).list.clear()-- menghapus setiap item.list.sort()-- mengurutkan di tempat. Berikanreverse=Trueuntuk urutan menurun.list.reverse()-- membalik urutan di tempat.
>>> nums = []
>>> nums.append(1)
>>> nums.extend([2, 3])
>>> nums.insert(0, 99)
>>> nums
[99, 1, 2, 3]
>>> nums.pop()
3
>>> nums.sort()
>>> nums
[1, 2, 99]
Metode-metode ini memodifikasi list di tempat dan mengembalikan None. Menulis
nums = nums.sort() # nums is now None -- common bug
hampir tidak pernah sesuai dengan yang Anda inginkan; nums yang asli telah diurutkan, tetapi penugasan kemudian menimpa nama tersebut dengan nilai kembalian. Panggil saja nums.sort() pada barisnya sendiri, atau gunakan fungsi bawaan sorted() untuk mendapatkan list baru yang telah diurutkan tanpa mengubah yang asli.
2.7.4. Operator¶
+menggabungkan dua list menjadi list baru.*mengulang sebuah list.inmenguji keanggotaan.
>>> [1, 2] + [3, 4]
[1, 2, 3, 4]
>>> [0] * 5
[0, 0, 0, 0, 0]
>>> 3 in [1, 2, 3]
True
2.7.5. Mengiterasi list¶
Loop for menjelajahi item secara berurutan:
for n in [10, 20, 30]:
print(n)
2.7.6. Aliasing dan mutasi¶
Sebuah list adalah satu nilai dalam memori; beberapa nama dapat menunjuk ke list yang sama. Memodifikasi melalui satu nama terlihat melalui setiap nama lain yang menunjuk ke list yang sama.
a dan b keduanya menunjuk ke list yang sama. Memodifikasi melalui nama mana pun mengubah apa yang dilihat oleh setiap nama lain.¶
>>> a = [1, 2, 3]
>>> b = a
>>> a.append(4)
>>> b
[1, 2, 3, 4] # same object, change is visible
Untuk membuat salinan independen, slice seluruh list atau panggil konstruktor list:
>>> c = a[:] # or list(a)
>>> a.append(5)
>>> c
[1, 2, 3, 4] # c is unaffected
Ini hanya menyalin list tingkat atas; list bersarang masih dibagikan antara yang asli dan salinannya.