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 -1
adalah cara yang berguna untuk mengambil item terakhir dari senarai tidak kira ukuran senarai.
list_of_ints[-1]
hasil 3
. list_of_objects[-1]
hasil None
.
Anda juga boleh menggunakan pemboleh ubah integer sebagai indeks anda. Sekiranya x=0
, list_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 berubahlist_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 kitax = list_of_ints.pop()
menggunakan asallist_of_ints
, x akan mengandungi nilainya3
. (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 berubahlist_of_ints
menjadi[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 indeksx
. Olehlist_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 pertama7
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 ini1
, jadi slice mengekalkan setiap elemen dari senarai yang dihirisnya. Tetapkanstep
ke2
, 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 uselist_of_ints.index(1)
to find the index of the first occurrence of the number1
inlist_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)