Cara bekerja dengan tipe data daftar Python

Python hadir dengan kumpulan tipe data built-in yang membuat operasi pengaturan data umum menjadi mudah. Diantaranya adalah  daftar , jenis koleksi yang sederhana namun serbaguna. Dengan daftar Python, Anda dapat mengelompokkan objek Python bersama-sama dalam baris satu dimensi yang memungkinkan objek diakses berdasarkan posisi, ditambahkan, dihapus, diurutkan, dan dibagi lagi.

Dasar-dasar daftar Python

Mendefinisikan daftar dengan Python itu mudah - cukup gunakan sintaks braket untuk menunjukkan item dalam daftar.

list_of_ints = [1, 2, 3]

Item dalam daftar juga tidak harus semuanya memiliki jenis yang sama. Mereka bisa berupa objek Python apa pun. (Di sini, anggaplah  Three sebuah fungsi.)

list_of_objects = ["Satu", DUA, Tiga, {"Empat": 4}, Tidak Ada]

Perhatikan bahwa memiliki objek campuran dalam daftar dapat berimplikasi pada pengurutan daftar. Kami akan membahas ini nanti.

Alasan terbesar untuk menggunakan daftar adalah untuk dapat menemukan objek berdasarkan posisinya di daftar. Untuk melakukan ini, Anda menggunakan notasi indeks Python: angka dalam tanda kurung, mulai dari 0, yang menunjukkan posisi item dalam daftar.

Untuk contoh di atas, list_of_ints[0]hasil 1. list_of_ints[1]hasil 2. list_of_objects[4]akan menjadi  None objeknya.

Pengindeksan daftar Python

Jika Anda menggunakan bilangan bulat positif untuk indeks, bilangan bulat tersebut menunjukkan posisi item yang akan dicari. Tetapi jika Anda menggunakan   bilangan bulat negatif , maka bilangan bulat menunjukkan posisi mulai dari  akhir  daftar. Misalnya, menggunakan indeks dari -1adalah cara praktis untuk mengambil item terakhir dari daftar berapa pun ukuran daftarnya.

list_of_ints[-1] hasil  3list_of_objects[-1] hasil  None.

Anda juga dapat menggunakan variabel integer sebagai indeks Anda. Jika  x=0list_of_ints[x] menghasilkan 1, dan seterusnya.

Menambah dan menghapus item daftar Python

Python memiliki beberapa cara untuk menambah atau menghapus item dari daftar.

  • .append() menyisipkan item di  akhir  daftar. Misalnya, list_of_ints.append(4)mau berubah  list_of_ints menjadi daftar  [1,2,3,4]. Menambahkan cepat dan efisien; dibutuhkan waktu yang kurang lebih sama untuk menambahkan satu item ke daftar tidak peduli berapa panjang daftarnya.
  • .pop() menghapus dan mengembalikan item terakhir dari daftar. Jika kita menjalankan  x = list_of_ints.pop() aslinya  list_of_ints, x akan berisi nilainya  3. (Anda tidak perlu menetapkan hasil dari  .pop() ke nilai, jika Anda tidak membutuhkannya.)  .pop()Operasi juga cepat dan efisien.
  • .insert() menyisipkan item di beberapa posisi sembarang dalam daftar. Misalnya,  list_of_ints.insert(0,10) mau berubah  list_of_intsmenjadi [10,1,2,3]. Perhatikan bahwa semakin dekat Anda menyisipkan ke depan daftar, semakin lambat operasi ini, meskipun Anda tidak akan melihat banyak pelambatan kecuali daftar Anda memiliki ribuan elemen atau Anda melakukan penyisipan dalam putaran yang ketat.
  • .pop(x) menghapus item di indeks  x. Jadi,  list_of_ints.pop(0) hapus item pada indeks 0. Sekali lagi, semakin dekat Anda ke depan daftar, semakin lambat operasi ini.
  • .remove(item) menghapus item dari daftar, tetapi  tidak  berdasarkan indeksnya. Sebaliknya, .remove()menghapus  kemunculan pertama  dari objek yang Anda tentukan, mencari dari atas daftar ke bawah. Sebab  [3,7,7,9,8].remove(7), yang pertama  7 akan dihapus, menghasilkan daftar  [3,7,9,8]. Operasi ini juga dapat memperlambat untuk daftar yang besar, karena secara teoritis harus melintasi seluruh daftar untuk bekerja.

Mengiris daftar Python

Daftar dapat dibagi menjadi beberapa daftar baru, proses yang disebut  pemotongan . Sintaks slice Python memungkinkan Anda menentukan bagian mana dari daftar yang akan diukir, dan cara memanipulasi bagian yang diukir.

Anda telah melihat di atas cara menggunakan notasi braket untuk mendapatkan satu item dari daftar my_list[2]:, misalnya. Iris menggunakan varian dari notasi indeks yang sama (dan mengikuti aturan-aturan pengindeksan yang sama): list_object[start:stop:step].

  • start adalah posisi dalam daftar untuk memulai potongan. 
  • stop adalah posisi dalam daftar tempat kami berhenti mengiris. Dengan kata lain,  posisi itu dan segala sesuatu setelahnya  dihilangkan.
  • step adalah indikator opsional "setiap elemen ke-n" untuk irisan. Secara default, ini adalah  1, jadi slice mempertahankan setiap elemen dari daftar asalnya. Setel stepke  2, dan Anda akan memilih setiap elemen detik, dan seterusnya.

Berikut ini beberapa contohnya. Pertimbangkan daftar ini:

slice_list = [1,2,3,4,5,6,7,8,9,0]

slice_list [0: 5] = [1, 2, 3, 4, 5]

(Perhatikan bahwa kami berhenti di indeks 4, bukan indeks 5!)

slice_list [0: 5: 2] = [1, 3, 5]

Jika Anda menghilangkan indeks irisan tertentu, Python mengasumsikan default. Tinggalkan indeks awal, dan Python mengasumsikan awal dari daftar:

slice_list [: 5] = [1, 2, 3, 4, 5]

Tinggalkan indeks stop, dan Python menganggap akhir dari daftar:

slice_list [4:] = [5, 6, 7, 8, 9, 0]

The  step elemen juga bisa  negatif . Ini memungkinkan kami mengambil irisan yang merupakan salinan terbalik dari aslinya:

slice_list [:: - 1] = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Perhatikan bahwa Anda dapat memotong secara terbalik dengan menggunakan indeks start dan stop yang mundur, bukan maju:

slice_list [5: 2: -1] = [6, 5, 4]

Juga perlu diingat bahwa potongan daftar adalah  salinan  dari daftar asli. Daftar asli tetap tidak berubah. 

[Juga pada: Kursus sains data gratis terbaik selama karantina]

Menyortir daftar Python

Python menyediakan dua cara untuk mengurutkan daftar: Anda dapat membuat daftar baru yang diurutkan dari yang lama, atau Anda dapat mengurutkan daftar yang ada di tempat. Opsi ini memiliki perilaku yang berbeda dan skenario penggunaan yang berbeda.

Untuk membuat daftar baru yang diurutkan, gunakan  sorted() fungsi di daftar lama:

new_list = diurutkan (old_list)

Ini akan mengurutkan konten daftar menggunakan metode pengurutan default Python. Untuk string, defaultnya adalah urutan abjad; untuk angka, itu nilai menaik. Perhatikan bahwa isi daftar harus konsisten agar ini berfungsi. Misalnya, Anda tidak dapat mengurutkan campuran bilangan bulat dan string, tetapi Anda dapat mengurutkan daftar yang semuanya bilangan bulat atau semua string. Jika tidak, Anda akan mendapatkan  TypeError operasi sortir.

Jika Anda ingin mengurutkan daftar secara terbalik, berikan  reverse parameter:

new_list = sorted(old_list, reverse=True)

The other way to sort, in-place sorting, performs the sort operation directly on the original list. To do this, use the list’s .sort()method:

old_list.sort()

.sort() also takes reverse as a parameter, allowing you to sort in reverse.

Both sorted() and .sort() also take a key parameter. The key parameter lets you provide a function that can be used to perform a custom sorting operation. When the list is sorted, each element is passed to the key function, and the resulting value is used for sorting. For instance, if we had a mix of integers and strings, and we wanted to sort them, we could use key like this:

mixed_list = [1,"2",3,"4", None] def sort_mixed(item): try: return int(item) except: return 0 sorted_list = sorted(mixed_list, key = sort_mixed) print (sorted_list)

Note that this code wouldn’t convert each element of the list into an integer! Rather, it would use the integer value of each item as its sort value. Also note how we use a try/except block to trap any values that don’t translate cleanly into an integer, and return 0 for them by default.

Python lists are not arrays

One important thing to know about lists in Python is that they aren’t “arrays.” Other languages, like C, have one-dimensional or multi-dimensional constructions called arrays that accept values of a single type. Lists are heterogenous; they can accept objects of any type.

What’s more, there is a separate array type in Python. The Python array is designed to emulate the behavior of an array in C, and it’s meant chiefly to allow Python to work with C arrays. The array type is useful in those cases, but in almost every pure-Python case you’ll want to use lists.

When to use Python lists (and when not to)

So when are Python lists most useful? A list is best when:

  • You need to find things quickly by their position in a collection. Accessing any position in a list takes the same amount of time, so there is no performance penalty for looking up even the millionth item in a list.
  • You’re adding and removing to the collection mainly by appending to the end or removing from the end, in the manner of a stack. Again, these operations take the same amount of time regardless of the length of the list.

A Python list is less suitable when:

  • You want to find an item in a list, but you don’t know its position. You can do this with the .index() property. For instance, you could use list_of_ints.index(1) to find the index of the first occurrence of the number 1 in list_of_ints. Speed should not be not an issue if your list is only a few items long, but for lists thousands of items long, it means Python has to search the entire list. For a scenario like this, use a dictionary, where each item can be found using a key, and where the lookup time will be the same for each value.
  • You want to add or remove items from any position but the end. Each time you do this, Python must move every other item after the added or removed item. The longer the list, the greater the performance issue this becomes. Python’s deque object is a better fit if you want to add or remove objects freely from either the start or the end of the list.

How to do more with Python

  • How to package Python apps with BeeWare Briefcase
  • How to run Anaconda side by side with other Pythons
  • How to use Python dataclasses
  • Get started with async in Python
  • How to use asyncio in Python
  • 3 steps to a Python async overhaul
  • How to use PyInstaller to create Python executables
  • Cython tutorial: How to speed up Python
  • How to install Python the smart way
  • How to manage Python projects with Poetry
  • How to manage Python projects with Pipenv
  • Virtualenv dan venv: Penjelasan lingkungan virtual Python
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan threading dan subproses Python
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk membuat profil kode Python
  • Cara menggunakan cProfile untuk membuat profil kode Python
  • Cara mengonversi Python ke JavaScript (dan kembali lagi)