Daftar daftar b python

Daftar adalah kumpulan nilai yang diurutkan, di mana setiap nilai diidentifikasi oleh indeks. Nilai-nilai yang membentuk sebuah daftar disebut elemen-elemennya. Daftar mirip dengan string, yang merupakan kumpulan karakter yang diurutkan, kecuali bahwa elemen daftar dapat memiliki tipe apa pun. Daftar dan string — dan hal-hal lain yang berperilaku seperti himpunan terurut — disebut urutan

9. 1. Daftar nilai

Ada beberapa cara untuk membuat daftar baru; . [ and ]):

[10, 20, 30, 40]
["spam", "bungee", "swallow"]

Contoh pertama adalah daftar empat bilangan bulat. Yang kedua adalah daftar tiga string. Elemen daftar tidak harus bertipe sama. Daftar berikut berisi string, float, integer, dan (mirabile dictu) daftar lainnya

["hello", 2.0, 5, [10, 20]]
_

Daftar di dalam daftar lain dikatakan bersarang

Akhirnya, ada daftar khusus yang tidak mengandung elemen. Ini disebut daftar kosong, dan dinotasikan [] .

Seperti nilai numerik 0 dan string kosong, daftar kosong salah dalam ekspresi boolean

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>

Dengan semua cara untuk membuat daftar ini, akan mengecewakan jika kita tidak dapat menetapkan nilai daftar ke variabel atau meneruskan daftar sebagai parameter ke fungsi. Kita dapat

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []

9. 2. Mengakses elemen

Sintaks untuk mengakses elemen daftar sama dengan sintaks untuk mengakses karakter string—operator braket ( [] – not to be confused with an empty list). The expression inside the brackets specifies the index. Remember that the indices start at 0:

>>> print numbers[0]
17
_

Ekspresi bilangan bulat apa pun dapat digunakan sebagai indeks

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers

Jika Anda mencoba membaca atau menulis elemen yang tidak ada, Anda akan mendapatkan kesalahan runtime

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_

Jika sebuah indeks memiliki nilai negatif, indeks tersebut menghitung mundur dari akhir daftar

>>> numbers[-1]
123
>>> numbers[-2]
17
>>> numbers[-3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

angka[-1] adalah elemen terakhir dari daftar, angka[-2] . numbers[-3] doesn’t exist.

Adalah umum untuk menggunakan variabel loop sebagai indeks daftar

horsemen = ["war", "famine", "pestilence", "death"]

i = 0
while i < 4:
    print horsemen[i]
    i += 1
_

Perulangan while ini dihitung dari 0 hingga 4. Ketika variabel loop i adalah 4, kondisi gagal dan loop berakhir. Jadi isi loop hanya dieksekusi ketika i adalah 0, 1, 2, dan 3.

Setiap kali melewati perulangan, variabel i digunakan sebagai indeks ke dalam daftar, mencetak i-eth element. This pattern of computation is called a list traversal.

9. 3. Panjang daftar

Fungsi len mengembalikan panjang daftar, yang sama dengan jumlah elemennya. Merupakan ide yang bagus untuk menggunakan nilai ini sebagai batas atas dari sebuah loop daripada sebuah konstanta. Dengan begitu, jika ukuran daftar berubah, Anda tidak perlu melalui program yang mengubah semua loop; .

horsemen = ["war", "famine", "pestilence", "death"]

i = 0
num = len(horsemen)
while i < num:
    print horsemen[i]
    i += 1
_

Terakhir kali badan loop dieksekusi, i adalah len(penunggang kuda)< . Ketika - 1, which is the index of the last element. When i sama dengan len(penunggang kuda) , kondisi gagal dan . len(horsemen) is not a legal index.

Meskipun daftar dapat berisi daftar lain, daftar bersarang tetap dihitung sebagai elemen tunggal. Panjang daftar ini adalah 4

["hello", 2.0, 5, [10, 20]]
_0

9. 4. Daftar keanggotaan

in adalah operator boolean yang menguji keanggotaan secara berurutan. Kami menggunakannya sebelumnya dengan string, tetapi juga berfungsi dengan daftar dan urutan lainnya.

["hello", 2.0, 5, [10, 20]]
_1

Karena penyakit sampar termasuk dalam daftar penunggang kuda , maka di operator returns True. Since debauchery is not in the list, in mengembalikan False .

Kita dapat menggunakan tidak dikombinasikan dengan di .

["hello", 2.0, 5, [10, 20]]
_2

9. 5. Operasi daftar

Operator + menggabungkan daftar.

["hello", 2.0, 5, [10, 20]]
_3

Demikian pula, operator * mengulangi daftar beberapa kali.

["hello", 2.0, 5, [10, 20]]
_4

Contoh pertama berulang [0] empat kali. Contoh kedua mengulangi daftar [1, 2, 3] tiga .

9. 6. Daftar irisan

Operasi irisan yang kita lihat dengan string juga berfungsi pada daftar

["hello", 2.0, 5, [10, 20]]
_5

9. 7. Fungsi rentang function

Daftar yang berisi bilangan bulat berurutan adalah umum, jadi Python menyediakan cara sederhana untuk membuatnya

["hello", 2.0, 5, [10, 20]]
_6

Fungsi rentang mengambil dua argumen dan mengembalikan daftar yang berisi semua bilangan bulat dari yang pertama hingga yang kedua, termasuk yang pertama tetapi tidak .

Ada dua bentuk lain dari rentang . Dengan satu argumen, itu membuat daftar yang dimulai dari 0.

["hello", 2.0, 5, [10, 20]]
_7

Jika ada argumen ketiga, itu menentukan ruang antara nilai-nilai yang berurutan, yang disebut ukuran langkah. Contoh ini menghitung dari 1 sampai 10 dengan langkah 2

["hello", 2.0, 5, [10, 20]]
_8

Jika ukuran langkah negatif, maka mulai harus lebih besar dari berhenti

["hello", 2.0, 5, [10, 20]]
_9

atau hasilnya akan menjadi daftar kosong

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
0

9. 8. Daftar dapat berubah

Tidak seperti string, daftar dapat diubah, yang berarti kita dapat mengubah elemennya. Menggunakan operator braket di sisi kiri tugas, kita dapat memperbarui salah satu elemen

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
1

Operator tanda kurung yang diterapkan pada daftar dapat muncul di mana saja dalam ekspresi. Saat muncul di sisi kiri tugas, itu mengubah salah satu elemen dalam daftar, jadi elemen pertama buah telah diubah dari < . Penugasan ke elemen daftar disebut penugasan item. Penetapan item tidak berfungsi untuk string. 'banana' to 'pear', and the last from 'quince' to 'orange'. An assignment to an element of a list is called item assignment. Item assignment does not work for strings:

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
2

tapi itu untuk daftar

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
_3

Dengan operator slice kita bisa mengupdate beberapa elemen sekaligus

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
_4

Kami juga dapat menghapus elemen dari daftar dengan menugaskan daftar kosong ke mereka

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
5

Dan kita bisa menambahkan elemen ke daftar dengan meremasnya menjadi irisan kosong di lokasi yang diinginkan

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
6

9. 9. Penghapusan daftar

Menggunakan irisan untuk menghapus elemen daftar bisa menjadi canggung, dan karena itu rawan kesalahan. Python memberikan alternatif yang lebih mudah dibaca

del menghapus elemen dari daftar.

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
7

Seperti yang Anda duga, del menangani indeks negatif dan menyebabkan kesalahan runtime jika indeks berada di luar jangkauan.

Anda dapat menggunakan irisan sebagai indeks untuk del .

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
_8

Seperti biasa, irisan memilih semua elemen hingga, tetapi tidak termasuk, indeks kedua

9. 10. Objek dan nilai

Jika kita menjalankan pernyataan penugasan ini,

>>> if []:
..    print 'This is true.'
.. else:
..    print 'This is false.'
...
This is false.
>>>
_9

kita tahu bahwa a dan b akan merujuk ke . Tapi kami belum tahu apakah mereka menunjuk ke string yang sama. "banana". But we don’t know yet whether they point to the same string.

Ada dua kemungkinan keadaan

Daftar daftar b python

Dalam satu kasus, a dan b lihat . Dalam kasus kedua, mereka mengacu pada hal yang sama. Hal-hal ini memiliki nama — mereka disebut objek. Objek adalah sesuatu yang dapat dirujuk oleh variabel.

Kita dapat menguji apakah dua nama memiliki nilai yang sama menggunakan == .

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
0

Kita dapat menguji apakah dua nama merujuk ke objek yang sama menggunakan operator is

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
1

Ini memberi tahu kita bahwa a dan b merujuk .

Karena string tidak dapat diubah, Python mengoptimalkan sumber daya dengan membuat dua nama yang merujuk ke nilai string yang sama merujuk ke objek yang sama

Ini tidak terjadi dengan daftar

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
2

Diagram keadaan di sini terlihat seperti ini

Daftar daftar b python

a dan b memiliki nilai yang sama tetapi tidak merujuk ke objek yang sama.

9. 11. Aliasing

Karena variabel merujuk ke objek, jika kita menugaskan satu variabel ke variabel lain, kedua variabel merujuk ke objek yang sama

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
_3

Dalam hal ini, diagram keadaan terlihat seperti ini

Daftar daftar b python

Karena daftar yang sama memiliki dua nama yang berbeda, a dan b, we say that it is aliased. Changes made with one alias affect the other:

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
_4

Meskipun perilaku ini bisa bermanfaat, terkadang tidak terduga atau tidak diinginkan. Secara umum, lebih aman untuk menghindari alias saat Anda bekerja dengan objek yang bisa berubah. Tentu saja, untuk objek yang tidak dapat diubah, tidak ada masalah. Itu sebabnya Python bebas menggunakan string alias ketika melihat peluang untuk berhemat

9. 12. Daftar kloning

Jika kita ingin memodifikasi daftar dan juga menyimpan salinan aslinya, kita harus dapat membuat salinan dari daftar itu sendiri, bukan hanya referensi. Proses ini terkadang disebut kloning, untuk menghindari ambiguitas penyalinan kata

Cara termudah untuk mengkloning daftar adalah dengan menggunakan operator irisan

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
5

Mengambil potongan apa pun dari a membuat daftar baru. Dalam hal ini potongan tersebut terdiri dari seluruh daftar.

Kini kami bebas melakukan perubahan pada b tanpa mengkhawatirkan a:

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
6

9. 13. Daftar dan for loop

Perulangan untuk juga berfungsi dengan daftar. Sintaks umum dari loop for adalah.

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
_7

Pernyataan ini setara dengan

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
8

loop for lebih ringkas karena kita bisa menghilangkan variabel loop, i. Here is an equivalent to the while loop dari bagian yang ditulis dengan for loop.

>>> vocabulary = ["ameliorate", "castigate", "defenestrate"]
>>> numbers = [17, 123]
>>> empty = []
>>> print vocabulary, numbers, empty
['ameliorate', 'castigate', 'defenestrate'] [17, 123] []
_9

Hampir terbaca seperti bahasa Inggris. Untuk (setiap) penunggang kuda dalam (daftar) penunggang kuda, cetak (nama) penunggang kuda

Ekspresi daftar apa pun dapat digunakan dalam loop for .

>>> print numbers[0]
17
_0

Contoh pertama mencetak semua kelipatan 3 antara 0 dan 19. Contoh kedua mengungkapkan antusiasme terhadap berbagai buah

Karena daftar dapat diubah, seringkali diinginkan untuk melintasi daftar, memodifikasi setiap elemennya. Kuadratkan semua bilangan berikut dari 1 sampai 5 .

>>> print numbers[0]
17
_1

Luangkan waktu sejenak untuk memikirkan tentang range(len(angka)) hingga Anda memahami cara kerjanya. Kami di sini tertarik pada nilai dan indeksnya di dalam daftar, sehingga kami dapat menetapkan nilai baru untuknya.

Pola ini cukup umum sehingga Python menyediakan cara yang lebih bagus untuk mengimplementasikannya

>>> print numbers[0]
17
_2

enumerate menghasilkan indeks dan nilai yang terkait dengannya selama penjelajahan daftar. Coba contoh berikut ini untuk melihat lebih jelas cara kerja enumerate .

>>> print numbers[0]
17
_3

9. 14. Daftar parameter

Melewati daftar sebagai argumen sebenarnya memberikan referensi ke daftar, bukan salinan daftar. Karena daftar adalah perubahan yang dapat diubah, perubahan yang dilakukan pada parameter juga mengubah argumen. Misalnya, fungsi di bawah mengambil daftar sebagai argumen dan mengalikan setiap elemen dalam daftar dengan 2

>>> print numbers[0]
17
_4

Jika kita memasukkan double_stuff dalam file bernama ch09. py , kita bisa mengujinya seperti ini.

>>> print numbers[0]
17
_5

Parameter a_list dan variabel things adalah alias . Diagram keadaan terlihat seperti ini.

Daftar daftar b python

Karena objek daftar dibagi oleh dua bingkai, kami menggambarnya di antara keduanya

Jika suatu fungsi mengubah parameter daftar, pemanggil akan melihat perubahannya

9. 15. Fungsi dan pengubah murni

Fungsi yang mengambil daftar sebagai argumen dan mengubahnya selama eksekusi disebut pengubah dan perubahan yang dibuatnya disebut efek samping

Fungsi murni tidak menghasilkan efek samping. Itu berkomunikasi dengan program pemanggil hanya melalui parameter, yang tidak diubah, dan nilai kembalian. Ini double_stuff ditulis sebagai fungsi murni.

>>> print numbers[0]
17
_6

Versi double_stuff ini tidak mengubah argumennya.

>>> print numbers[0]
17
_7

Untuk menggunakan versi fungsi murni dari double_stuff untuk memodifikasi sesuatu, you would assign the return value back to things:

>>> print numbers[0]
17
_8

9. 16. Mana yang lebih baik?

Apa pun yang dapat dilakukan dengan pengubah juga dapat dilakukan dengan fungsi murni. Faktanya, beberapa bahasa pemrograman hanya mengizinkan fungsi murni. Ada beberapa bukti bahwa program yang menggunakan fungsi murni lebih cepat berkembang dan lebih sedikit rawan kesalahan daripada program yang menggunakan pengubah. Namun demikian, pengubah terkadang nyaman, dan dalam beberapa kasus, program fungsional kurang efisien

Secara umum, kami menganjurkan agar Anda menulis fungsi murni kapan pun wajar untuk melakukannya dan menggunakan pengubah hanya jika ada keuntungan yang menarik. Pendekatan ini mungkin disebut gaya pemrograman fungsional

9. 17. Daftar bersarang

Daftar bersarang adalah daftar yang muncul sebagai elemen dalam daftar lain. Dalam daftar ini, elemen dengan indeks 3 adalah daftar bersarang

>>> print numbers[0]
17
_9

Jika kita mencetak bersarang[3] , kita mendapatkan [10, 20]. To extract an element from the nested list, we can proceed in two steps:

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
0

Atau kita bisa menggabungkannya

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
1

Operator braket mengevaluasi dari kiri ke kanan, jadi ekspresi ini mendapatkan elemen tiga-eth dari bersarang dan mengekstrak elemen satu-eth dari .

9. 18. Matriks

Daftar bersarang sering digunakan untuk mewakili matriks. Misalnya matriks

Daftar daftar b python

mungkin direpresentasikan sebagai

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
2

matriks adalah daftar dengan tiga elemen, di mana setiap elemen adalah baris dari matriks. Kita dapat memilih seluruh baris dari matriks dengan cara biasa.

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_3

Atau kita dapat mengekstrak satu elemen dari matriks menggunakan bentuk indeks ganda

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_4

Indeks pertama memilih baris, dan indeks kedua memilih kolom. Meskipun cara merepresentasikan matriks seperti ini umum dilakukan, ini bukan satu-satunya kemungkinan. Variasi kecil adalah dengan menggunakan daftar kolom, bukan daftar baris. Nanti kita akan melihat alternatif yang lebih radikal menggunakan kamus

9. 19. Pengembangan yang digerakkan oleh tes (TDD)

Test-driven development (TDD) adalah praktik pengembangan perangkat lunak yang sampai pada fitur yang diinginkan melalui serangkaian langkah iteratif kecil yang dimotivasi oleh tes otomatis yang ditulis terlebih dahulu yang menyatakan penyempurnaan yang meningkat dari fitur yang diinginkan

Doctest memungkinkan kita mendemonstrasikan TDD dengan mudah. Katakanlah kita menginginkan fungsi yang membuat baris dengan kolom matriks yang diberikan . rows and columns.

Pertama-tama kita menyiapkan pengujian untuk fungsi ini dalam file bernama matriks. py .

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
5

Menjalankan ini mengembalikan dalam tes yang gagal

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_6

Pengujian gagal karena badan fungsi hanya berisi satu string yang dikutip tiga kali lipat dan tidak ada pernyataan pengembalian, sehingga mengembalikan Tidak ada . Pengujian kami menunjukkan bahwa kami ingin mengembalikan matriks dengan 3 baris dari 5 kolom nol.

Aturan dalam menggunakan TDD adalah menggunakan hal paling sederhana yang berfungsi dalam menulis solusi untuk lulus ujian, jadi dalam hal ini kita cukup mengembalikan hasil yang diinginkan

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_7

Menjalankan ini sekarang pengujian berhasil, tetapi penerapan make_matrix kami saat ini selalu mengembalikan hasil yang sama, yang jelas bukan yang kami maksudkan. Untuk memperbaikinya, pertama-tama kami memotivasi peningkatan kami dengan menambahkan tes.

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_8

yang seperti yang kita harapkan gagal

>>> numbers[9-8]
123
>>> numbers[1.0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers
_9

Teknik ini disebut test-driven karena kode hanya boleh ditulis ketika ada tes yang gagal untuk lulus. Termotivasi oleh tes yang gagal, kami sekarang dapat menghasilkan solusi yang lebih umum

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_0

Solusi ini tampaknya berfungsi, dan kami mungkin berpikir kami sudah selesai, tetapi ketika kami menggunakan fungsi baru nanti, kami menemukan bug

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_1

Kami ingin menetapkan elemen di baris kedua dan kolom ketiga nilai 7, sebagai gantinya, semua elemen di kolom ketiga adalah 7

Setelah refleksi, kami menyadari bahwa dalam solusi kami saat ini, setiap baris adalah alias dari baris lainnya. Ini jelas bukan yang kami maksudkan, jadi kami mulai memperbaiki masalah, pertama dengan menulis tes yang gagal

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_2

Dengan pengujian yang gagal untuk diperbaiki, kami sekarang didorong ke solusi yang lebih baik

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_3

Menggunakan TDD memiliki beberapa manfaat untuk proses pengembangan perangkat lunak kami. Dia

  • membantu kita berpikir secara konkret tentang masalah yang kita coba selesaikan sebelum kita mencoba menyelesaikannya
  • mendorong pemecahan masalah yang rumit menjadi masalah yang lebih kecil dan lebih sederhana dan bekerja menuju solusi dari masalah yang lebih besar selangkah demi selangkah
  • memastikan bahwa kami memiliki rangkaian pengujian otomatis yang dikembangkan dengan baik untuk perangkat lunak kami, memfasilitasi penambahan dan peningkatan di kemudian hari

9. 20. String dan daftar

Python memiliki perintah bernama list yang menggunakan tipe urutan sebagai argumen dan membuat daftar dari elemen-elemennya.

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_4

Ada juga perintah str yang mengambil nilai Python apa pun sebagai argumen dan mengembalikan representasi string darinya.

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_5

Seperti yang dapat kita lihat dari contoh terakhir, str tidak dapat digunakan untuk menggabungkan daftar karakter bersama-sama. Untuk melakukannya, kita dapat menggunakan fungsi join di modul string .

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_6

Dua dari fungsi paling berguna dalam modul string melibatkan daftar string. Fungsi split memecah string menjadi daftar kata. Secara default, sejumlah karakter spasi dianggap sebagai batas kata.

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_7

Argumen opsional yang disebut pembatas dapat digunakan untuk menentukan karakter mana yang akan digunakan sebagai batas kata. Contoh berikut menggunakan string ai sebagai pembatas.

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_8

Perhatikan bahwa pembatas tidak muncul dalam daftar

string. join adalah kebalikan dari string. pisahkan . Dibutuhkan dua argumen. daftar string dan pemisah yang akan ditempatkan di antara setiap elemen dalam daftar di string yang dihasilkan.

>>> numbers[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
_9

9. 21. Glosarium

aliasesBeberapa variabel yang berisi referensi ke objek yang sama. cloneUntuk membuat objek baru yang memiliki nilai yang sama dengan objek yang sudah ada. Menyalin referensi ke objek membuat alias tetapi tidak mengkloning objek. delimiterKarakter atau string yang digunakan untuk menunjukkan di mana string harus dipisahkan. elementSalah satu nilai dalam daftar (atau urutan lainnya). Operator braket memilih elemen dari daftar. indexSuatu variabel atau nilai bilangan bulat yang menunjukkan elemen dari daftar. listA kumpulan objek bernama, di mana setiap objek diidentifikasi oleh indeks. list traversalPengaksesan berurutan dari setiap elemen dalam sebuah list. modifierFungsi yang mengubah argumennya di dalam badan fungsi. Hanya tipe yang dapat diubah yang dapat diubah oleh pengubah. tipe data yang dapat diubahTipe data yang elemennya dapat dimodifikasi. Semua tipe yang bisa berubah adalah tipe majemuk. Daftar adalah tipe data yang bisa berubah; . daftar bersarangSebuah daftar yang merupakan elemen dari daftar lain. objectSebuah hal yang dapat dirujuk oleh variabel. fungsi murniFungsi yang tidak memiliki efek samping. Fungsi murni hanya membuat perubahan pada program pemanggilan melalui nilai pengembaliannya. sequenceSetiap tipe data yang terdiri dari kumpulan elemen terurut, dengan setiap elemen diidentifikasi oleh indeks. efek sampingPerubahan status program yang dibuat dengan memanggil fungsi yang bukan merupakan hasil pembacaan nilai kembalian dari fungsi tersebut. Efek samping hanya dapat dihasilkan oleh pengubah. ukuran langkahInterval antara elemen berurutan dari urutan linier. Argumen ketiga (dan opsional) untuk fungsi rentang disebut ukuran langkah. Jika tidak ditentukan, standarnya adalah 1. test-driven development (TDD)Praktek pengembangan perangkat lunak yang sampai pada fitur yang diinginkan melalui serangkaian langkah iteratif kecil yang dimotivasi oleh tes otomatis yang ditulis terlebih dahulu yang menyatakan penyempurnaan yang meningkat dari fitur yang diinginkan. (lihat artikel Wikipedia tentang Test-driven development untuk informasi lebih lanjut. )

9. 22. Latihan

  1. Tulis loop yang melintasi

    ["hello", 2.0, 5, [10, 20]]
    
    _0

    dan mencetak panjang setiap elemen. Apa yang terjadi jika Anda mengirim bilangan bulat ke len ? . 1 to 'one' and run your solution again.

  2. Buka file bernama ch09e02. py dan dengan konten berikut.

    >>> numbers[-1]
    123
    >>> numbers[-2]
    17
    >>> numbers[-3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    1

    Tambahkan setiap set doctests berikut ke docstring di bagian atas file dan tulis kode Python untuk membuat doctests lulus

    >>> numbers[-1]
    123
    >>> numbers[-2]
    17
    >>> numbers[-3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    2

    >>> numbers[-1]
    123
    >>> numbers[-2]
    17
    >>> numbers[-3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    3

    >>> numbers[-1]
    123
    >>> numbers[-2]
    17
    >>> numbers[-3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    4

    >>> numbers[-1]
    123
    >>> numbers[-2]
    17
    >>> numbers[-3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    
    5

    Hanya tambahkan satu set dokumen dalam satu waktu. Kumpulan dokumen berikutnya tidak boleh ditambahkan sampai set sebelumnya lulus

    Bagaimana cara menetapkan daftar ke daftar lain dengan Python?

    Berbagai Cara menyalin daftar. .
    Menggunakan teknik pemotongan
    Menggunakan metode extend()
    Buat daftar salinan menggunakan =(operator penugasan)
    Menggunakan metode Shallow Copy
    Menggunakan pemahaman daftar
    Menggunakan metode append()
    Menggunakan metode copy()
    Menggunakan metode Deep Copy

    Apa [. ] dengan Python?

    Itu [. ] membuat salinan dangkal dari array , sehingga memungkinkan Anda untuk mengubah salinan tanpa merusak aslinya. Alasan ini juga berfungsi untuk string adalah karena dalam Python, String adalah array byte yang mewakili karakter Unicode.

    Bisakah Anda memiliki daftar daftar daftar dengan Python?

    Python menyediakan opsi untuk membuat daftar di dalam daftar . Sederhananya, itu adalah daftar bersarang tetapi dengan satu atau lebih daftar di dalamnya sebagai elemen. Di sini, [a,b], [c,d], dan [e,f] adalah daftar terpisah yang diteruskan sebagai elemen untuk membuat daftar baru. Ini adalah daftar daftar.

    Apa 3 jenis daftar di Python?

    Daftar adalah salah satu dari 4 tipe data bawaan di Python yang digunakan untuk menyimpan kumpulan data, 3 lainnya adalah Tuple, Set, dan Dictionary, all with different qualities and usage.