Cara bekerja dengan jenis data senarai Python

Python dilengkapi dengan koleksi jenis data terbina dalam yang menjadikan operasi pemalsuan data biasa menjadi mudah. Antaranya ialah  senarai , jenis koleksi yang ringkas tetapi serba boleh. Dengan senarai Python, anda dapat mengumpulkan objek Python dalam satu baris dimensi yang membolehkan objek diakses berdasarkan kedudukan, ditambahkan, dikeluarkan, disusun, dan dibahagi lagi.

Asas senarai Python

Mendefinisikan senarai di Python adalah mudah - cukup gunakan sintaks kurungan untuk menunjukkan item dalam senarai.

list_of_ints = [1, 2, 3]

Item dalam senarai tidak harus sama jenisnya. Mereka boleh menjadi objek Python. (Di sini, anggaplah  Three fungsi.)

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

Perhatikan bahawa mempunyai objek bercampur dalam senarai boleh memberi implikasi untuk menyusun senarai. Kami akan membahasnya kemudian.

Sebab terbesar untuk menggunakan senarai adalah untuk mencari objek mengikut kedudukannya dalam senarai. Untuk melakukan ini, anda menggunakan notasi indeks Python: angka dalam tanda kurung, bermula dari 0, yang menunjukkan kedudukan item dalam senarai.

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

Pengindeksan senarai Python

Sekiranya anda menggunakan bilangan bulat positif untuk indeks, bilangan bulat menunjukkan kedudukan item yang akan dicari. Tetapi jika anda menggunakan   bilangan bulat negatif , maka bilangan bulat menunjukkan kedudukan bermula dari  akhir  senarai. Sebagai contoh, menggunakan indeks -1adalah cara yang berguna untuk mengambil item terakhir dari senarai tidak kira ukuran senarai.

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

Anda juga boleh menggunakan pemboleh ubah integer sebagai indeks anda. Sekiranya  x=0list_of_ints[x] menghasilkan 1, dan seterusnya.

Menambah dan membuang item senarai Python

Python mempunyai beberapa cara untuk menambah atau membuang item dari senarai.

  • .append() memasukkan item di  hujung  senarai. Sebagai contoh, list_of_ints.append(4)akan berubah  list_of_ints menjadi senarai  [1,2,3,4]. Append cepat dan cekap; memerlukan masa yang sama untuk menambahkan satu item ke senarai tidak kira berapa lama senarai itu.
  • .pop() membuang dan mengembalikan item terakhir dari senarai. Sekiranya kita  x = list_of_ints.pop() menggunakan asal  list_of_ints, x akan mengandungi nilainya  3. (Anda tidak perlu menyerahkan keputusan  .pop() kepada nilai, walaupun, jika anda tidak memerlukannya.)  .pop()Operasi juga cepat dan cekap.
  • .insert() memasukkan item pada beberapa kedudukan sewenang-wenang dalam senarai. Contohnya,  list_of_ints.insert(0,10) akan berubah  list_of_intsmenjadi [10,1,2,3]. Perhatikan bahawa semakin dekat anda memasukkan ke bahagian depan senarai, semakin perlahan operasi ini, walaupun anda tidak akan melihat banyak kelambatan melainkan senarai anda mempunyai beribu-ribu elemen atau anda melakukan sisipan dalam gelung ketat.
  • .pop(x) membuang item di indeks  x. Oleh  list_of_ints.pop(0) itu, item tersebut akan dikeluarkan pada indeks 0. Sekali lagi, semakin dekat dengan senarai hadapan, semakin perlahan operasi ini.
  • .remove(item) membuang item dari senarai, tetapi  tidak  berdasarkan indeksnya. Sebaliknya, .remove()menghilangkan  kejadian pertama  objek yang anda tentukan, mencari dari bahagian atas senarai ke bawah. Sebab  [3,7,7,9,8].remove(7), yang pertama  7 akan dikeluarkan, menghasilkan senarai  [3,7,9,8]. Operasi ini juga dapat melambatkan senarai besar, kerana secara teorinya harus melintasi keseluruhan senarai untuk berfungsi.

Memotong senarai Python

Daftar boleh dibahagikan kepada senarai baru, proses yang disebut  pemotongan . Sintaks irisan Python memungkinkan anda menentukan bahagian senarai mana yang harus diukir, dan bagaimana memanipulasi bahagian yang diukir.

Anda melihat di atas cara menggunakan notasi kurungan untuk mendapatkan satu item dari senarai my_list[2]:, misalnya. Keping menggunakan varian tatatanda indeks yang sama (dan mematuhi peraturan pengindeksan demikian) list_object[start:stop:step].

  • start adalah kedudukan dalam senarai untuk memulakan slice. 
  • stop adalah kedudukan dalam senarai di mana kita berhenti memotong. Dengan kata lain,  kedudukan itu dan segala yang ada setelah ia  dihilangkan.
  • step adalah penunjuk "setiap elemen ke-9" pilihan untuk slice. Secara lalai ini  1, jadi slice mengekalkan setiap elemen dari senarai yang dihirisnya. Tetapkan stepke  2, dan anda akan memilih setiap elemen kedua, dan seterusnya.

Berikut adalah beberapa contoh. Pertimbangkan senarai ini:

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

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

(Perhatikan bahawa kita berhenti di indeks 4, bukan indeks 5!)

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

Sekiranya anda menghilangkan indeks kepingan tertentu, Python menganggap default. Tinggalkan indeks permulaan, dan Python menganggap permulaan senarai:

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

Tinggalkan indeks berhenti, dan Python menganggap akhir senarai:

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

The  step unsur juga boleh menjadi  negatif . Ini membolehkan kita mengambil potongan yang merupakan salinan terbalik yang asal:

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

Perhatikan bahawa anda boleh mengiris secara terbalik dengan menggunakan indeks permulaan dan berhenti yang bergerak ke belakang, bukan ke hadapan:

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

Ingat juga bahawa potongan senarai adalah  salinan  dari senarai asal. Senarai asalnya tetap tidak berubah. 

[Juga di: Kursus sains data percuma terbaik semasa kuarantin]

Menyusun senarai Python

Python provides two ways to sort lists: You can generate a new, sorted list from the old one, or you can sort an existing list in-place. These options have different behaviors and different usage scenarios.

To create a new, sorted list, use the sorted() function on the old list:

new_list = sorted(old_list)

This will sort the contents of the list using Python’s default sorting methods. For strings, the default is alphabetical order; for numbers, it’s ascending values. Note that the contents of the list need to be consistent for this to work. For instance, you can’t sort a mix of integers and strings, but you can sort a list that is all integers or all strings. Otherwise you’ll get a TypeError in the sort operation.

If you want to sort a list in reverse, pass the 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: Persekitaran maya Python dijelaskan
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan dan proses subtitle Python dijelaskan
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk profil kod Python
  • Cara menggunakan cProfile untuk profil kod Python
  • Cara menukar Python ke JavaScript (dan kembali lagi)