Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Sejauh ini, kami membutuhkan nama variabel baru untuk setiap informasi baru yang ingin kami simpan. Daftar adalah tipe data Python yang dapat menyimpan banyak informasi, secara berurutan, dan dengan satu nama variabel. Nama daftar, bersama dengan bilangan bulat non-negatif kemudian dapat digunakan untuk merujuk ke masing-masing item data. Mari kita mulai dengan sebuah contoh

Perhatikan bahwa kita dapat menggunakan

worst_things_about_cs1 = []
2 dan
worst_things_about_cs1 = []
3 seolah-olah mereka adalah variabel dengan sendirinya

Ada dua kegunaan utama daftar

  1. Menyimpan data serupa dalam jumlah besar hanya dengan menggunakan satu nama untuk daftar
  2. Menerapkan operasi serupa ke banyak bagian data

Membuat daftar

Anda dapat mengetikkan daftar menggunakan tanda kurung dan koma

Saat juru bahasa Python mencapai tanda kurung, Python mengalokasikan ruang dalam memori untuk item dalam daftar. Tentu saja, biasanya tidak ada gunanya hanya mencetak daftar yang dibuat dengan cara ini; . Operator penugasan

worst_things_about_cs1 = []
_4 menugaskan daftar ke variabel di sisi kiri

characters = ["Horton", "Lorax", "Mayzie"]

Sebenarnya, mengatakan “

worst_things_about_cs1 = []
5 adalah daftar adalah salah. Sebaliknya, hal yang benar untuk dikatakan adalah “
worst_things_about_cs1 = []
5 memegang alamat dalam memori daftar. Meskipun perbedaan antara "adalah daftar" dan "memegang alamat dalam memori daftar" mungkin tampak halus sekarang, kita akan melihat nanti bahwa pasti ada perbedaan.

Anda juga dapat membuat daftar kosong

worst_things_about_cs1 = []

Untuk saat ini, kami tidak banyak menggunakan daftar kosong, tetapi kami akan segera melihat bahwa kami dapat memulai dengan daftar kosong dan kemudian menambahkan item ke dalamnya

Latihan. Kekuatan bintang

Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Objektif. Buat daftar dengan data dan manfaatkan daftar itu dengan meneruskannya ke suatu fungsi

Titik sudut bintang yang berpusat di tengah area gambar kecil adalah (161, 86), (119, 80), (100, 43) (81, 80), (39, 86), (70, 116), (

Pada kode di bawah ini, fungsi

worst_things_about_cs1 = []
7 mengambil dua parameter. Parameter pertama adalah referensi ke daftar yang berisi koordinat x poligon. Parameter kedua adalah referensi ke daftar yang berisi koordinat y poligon. Gambar bintang di layar

Ini solusinya

Mengakses item dari daftar

Setelah daftar dibuat dan alamatnya ditetapkan ke variabel, Anda akan ingin melakukan sesuatu dengan masing-masing item dari daftar. Kami menggunakan tanda kurung siku untuk mengindeks ke dalam daftar. Elemen daftar pertama ada di indeks 0 (karena begitulah cara para ilmuwan komputer menghitung. mulai dari 0), jadi untuk mendapatkan item ke-0 dalam daftar, ikuti nama variabel daftar dengan tanda kurung siku berisi angka 0

Apa yang ada di dalam tanda kurung dapat berupa ekspresi apa pun yang dievaluasi menjadi int yang berada dalam rentang indeks

Perhatikan bahwa item daftar benar-benar dapat diperlakukan sebagai variabel. Anda dapat menggunakan operator penugasan untuk mengubah item dalam daftar (

worst_things_about_cs1 = []
8). Ini contoh lainnya

worst_things_about_cs1 = []
_9 memiliki nilai 8 (ingat, kita mulai menghitung, atau mengindeks, daftar, dari 0).
IndexError: list index out of range
_0 memiliki nilai 12. Setelah menambahkan, kami mendapatkan 20, dan menetapkan nilai itu ke item ke-0 dari daftar. Jalankan program untuk melihat hasilnya

Kesalahan pemrograman umum. Indeks daftar di luar jangkauan

Jika Anda lupa bahwa daftar diindeks dari 0, atau karena alasan lain mencoba mengakses item daftar pada indeks di luar akhir daftar, Python akan membatalkan program Anda dan mencetak pesan kesalahan. Kode berikut gagal, karena hanya ada item pada indeks 0, 1, dan 2

Ini adalah jenis kesalahan pemrograman yang sangat umum. Jika Anda mendapatkan kesalahan seperti

IndexError: list index out of range

dari Python, telusuri kode Anda dengan tangan di dekat garis di mana Python melaporkan kesalahan, dan cari tahu bagaimana Anda berhasil meminta indeks daftar yang tidak ada dalam daftar. Ada dua kasus

  1. Anda meminta item pada indeks yang Anda inginkan, tetapi entah bagaimana awalnya tidak memasukkan item tersebut ke dalam daftar
  2. Anda memasukkan item yang benar ke dalam daftar, tetapi membuat kesalahan dalam menghitung atau memilih indeks

Panjang daftar

Anda dapat mengetahui berapa banyak item dalam daftar menggunakan fungsi bawaan Python

IndexError: list index out of range
1. Ini sebuah contoh

Iterasi daftar dengan while-loop

Daftar adalah cara mengatur, atau menyusun, data yang akan digunakan oleh program Anda. Kami mengatakan bahwa daftar adalah struktur data, dan kami akan melihat banyak contoh lain dari struktur data nanti dalam kursus. Salah satu prinsip kunci dari struktur data adalah bahwa struktur data memungkinkan Anda untuk menerapkan operasi ke beberapa atau semua data secara terpadu.

Mari kita ambil contoh. Anda memutuskan untuk memulai situs web baru,

IndexError: list index out of range
2. Awalnya, suhu harian dicatat dalam Fahrenheit

temperatures = [9, 14, 18, 12, 4, 16, -11]

Tapi kemudian bulan depan, Amerika Serikat memutuskan untuk mengkonversi ke skala Celcius, meninggalkan Bahama, Belize, Kepulauan Cayman, dan Jamaika sebagai satu-satunya negara yang menggunakan skala Fahrenheit. Anda memutuskan untuk mengubah semua suhu Anda ke Celsius. Anda bisa melakukannya dengan cara ini

(Perhatikan ketidakakuratan floating-point. Aku bilang begitu. )

Anda melakukan jenis operasi yang sama berulang kali. Ubah

IndexError: list index out of range
_3. Ubah
IndexError: list index out of range
_4. Ubah
IndexError: list index out of range
_5. Dan seterusnya. Anda bisa menggunakan loop, dan mengganti enam pernyataan seperti itu,

while-loop ini akan bekerja bahkan untuk daftar suhu yang sangat panjang

Latihan. bintang jatuh

Objektif. Ubah data dalam daftar menggunakan while loop

Kode di bawah menggambar bintang di tengah layar. Tulis ulang kode sehingga bintang perlahan-lahan jatuh dari posisi awalnya ke bawah

Ini solusinya

Contoh desain dan implementasi algoritma. membalik daftar

Mari kita lihat contoh di mana kita ingin membalikkan daftar. Ingat dari bab pertama bahwa strategi langkah demi langkah yang ditentukan sepenuhnya untuk memecahkan masalah dalam ilmu komputer disebut algoritma. Langkah pertama untuk memecahkan masalah adalah memikirkan bagaimana kita bisa menyelesaikannya sebagai manusia, setepat mungkin. Setelah setiap langkah ditentukan sepenuhnya, kami telah merancang sebuah algoritme. Kami kemudian menerjemahkan algoritme tersebut menjadi kode yang dapat dijalankan, sehingga mengimplementasikan algoritme tersebut

Ada dua pilihan untuk algoritme daftar_balik kami

  1. Buat salinan daftar baru yang terbalik, biarkan daftar asli tetap utuh

  2. Balikkan daftar “di tempat. ” Jika kita melakukannya dengan cara ini, hanya ada satu daftar, dan di akhir operasi, item daftar berada dalam urutan terbalik. Kami mengatakan bahwa operasi ini ada karena item tidak pernah meninggalkan daftar tempat mereka memulai

Kami akan menggunakan pendekatan kedua dan membalikkan daftar, karena saya belum memberi tahu Anda cara membuat daftar baru dengan ukuran yang benar

Sekarang mari pikirkan tentang cara membalikkan daftar pada tempatnya. Apa target kita?

Kami ingin item pertama berada di tempat item terakhir, dan sebaliknya. Kami ingin item kedua berada di posisi item kedua hingga terakhir saat ini, dan sebaliknya. Jadi, inilah upaya pertama pada spesifikasi algoritme kami, dalam bahasa Inggris (atau kode semu)

for every item in the list:
   swap the item with the corresponding item from the end of the list

Apakah ini akan berhasil? . Mulailah dengan menukar item pertama dengan yang keenam. Bagus. Tukar item kedua dengan item kelima. Bagus. Tukar item ketiga dengan item keempat. Bagus. Item berikutnya adalah item keempat. Houston kita punya masalah. Setelah kami menukar item ketiga dengan yang keempat, kami benar-benar selesai — daftarnya dibalik. Jika kami kemudian menukar yang keempat dengan yang ketiga, seperti yang tampaknya ditentukan oleh upaya pertama kami pada algoritme, kami mengembalikannya ke tempat semula saat kami mulai. Kami telah mulai membatalkan pembalikan item daftar kami. Kami perlu memodifikasi algoritme kami sehingga berhenti setelah menukar hanya setengah dari item dalam daftar

for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list

Ada satu hal lagi yang membuat kita gugup. Daftar panjang 6 memiliki paruh pertama dan paruh kedua, masing-masing berukuran 3. Bagaimana jika kita memiliki daftar panjang 7? . Jadi untuk daftar dengan panjang 7, kita hanya perlu melakukan 3 penukaran. Jika panjang daftar ganjil, jumlah penukaran adalah panjang daftar, dibagi 2, dan dibulatkan ke bawah. Jika panjang daftar genap, jumlah swap adalah panjang daftar dibagi 2. Jadi desain algoritma terakhir kami adalah

for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list

Sekarang mari kita terapkan algoritma reverse_list dalam kode Python. Kita perlu mengulang paruh pertama (dibulatkan ke bawah) dari daftar. Kita bisa menggunakan while-loop untuk itu

Ada beberapa hal yang sulit untuk diperhatikan. Pertama, kita dapat menyelesaikan pembulatan indeks item tengah daftar dengan hanya menggunakan pembagian bilangan bulat (

IndexError: list index out of range
6). Di Python 2, kita bisa saja menggunakan operator
IndexError: list index out of range
7, tetapi operator pembagian bilangan bulat
IndexError: list index out of range
8 membuatnya lebih spesifik dan juga berfungsi untuk Python 3

Selain itu, karena indeks dalam daftar dimulai dari 0, kita harus berhati-hati dalam menghitung indeks ke paruh kedua daftar. Ada baiknya untuk memeriksa contohnya. Misalkan daftar

IndexError: list index out of range
_9 memiliki panjang 8. Maka indeks item terakhir harus 7. Jadi kita harus menggunakan
temperatures = [9, 14, 18, 12, 4, 16, -11]
_0, lalu kurangi indeks saat ini untuk memasukkan indeks ke bagian kedua daftar. Menyelesaikannya. jika indeksnya 0, maka
temperatures = [9, 14, 18, 12, 4, 16, -11]
1 memberikan 7. Jika indeksnya adalah 1, maka
temperatures = [9, 14, 18, 12, 4, 16, -11]
2 memberikan 6. Jika indeksnya adalah 2, maka
temperatures = [9, 14, 18, 12, 4, 16, -11]
3 memberikan 5. Dan seterusnya. Jadi itu berhasil

Hal terakhir yang perlu diperhatikan adalah bagaimana kami menukar item. Kami membutuhkan variabel sementara untuk menyimpan salah satu nilai. Misalkan Anda mencoba sesuatu seperti ini

l[index] = l[right_index]
l[right_index] = l[index]

Kedua item daftar akan berakhir dengan nilai yang sama setelah baris pertama, dan nilai asli

temperatures = [9, 14, 18, 12, 4, 16, -11]
4 telah hilang dan tidak dapat ditarik kembali

Jika membutuhkan variabel sementara membuat Anda bingung, pikirkan seperti ini. Misalkan Nicole dan Tom ingin menukar posisi kedua mobil mereka di garasi dua mobil mereka. Chevy Tom dimulai dari sisi kiri, dan Honda Nicole dimulai dari kanan. Tom tidak bisa begitu saja mengemudikan Chevy-nya ke sisi kanan. Tidak, dia harus meletakkan Chevy-nya di jalan masuk (tempat penyimpanan sementara), lalu meletakkan Honda Nicole di sisi kiri, dan akhirnya memindahkan Chevy-nya ke sisi kanan.

Menambahkan ke daftar yang ada

Jika Anda memiliki daftar yang ada dan ingin menambahkan item sampai akhir, Anda dapat melakukannya dengan fungsi

temperatures = [9, 14, 18, 12, 4, 16, -11]
5

Sintaks untuk

temperatures = [9, 14, 18, 12, 4, 16, -11]
_5 mungkin bukan yang Anda harapkan. Anda mungkin mengharapkan sesuatu seperti
temperatures = [9, 14, 18, 12, 4, 16, -11]
_7, karena
temperatures = [9, 14, 18, 12, 4, 16, -11]
5 jelas membutuhkan dua hal. variabel yang mengacu pada daftar,
temperatures = [9, 14, 18, 12, 4, 16, -11]
_9, dan data yang akan ditambahkan,
for every item in the list:
   swap the item with the corresponding item from the end of the list
0

Apa yang dilakukan periode di

for every item in the list:
   swap the item with the corresponding item from the end of the list
1? . Metode mengubah hal-hal yang disebut objek. Kita akan melihat objek secara mendetail di bab mendatang, dan sintaks untuk memanggil
temperatures = [9, 14, 18, 12, 4, 16, -11]
5 ini menunjukkan bahwa daftar adalah sejenis objek. Dalam hal ini, kami memanggil metode
temperatures = [9, 14, 18, 12, 4, 16, -11]
_5 pada daftar
temperatures = [9, 14, 18, 12, 4, 16, -11]
9, meneruskan ke metode parameter
for every item in the list:
   swap the item with the corresponding item from the end of the list
0. Jika diskusi ini tidak masuk akal bagi Anda sekarang, jangan takut. itu akan. Sementara itu, anggap saja cara menambahkan item, misalnya
for every item in the list:
   swap the item with the corresponding item from the end of the list
6, ke daftar, katakan
for every item in the list:
   swap the item with the corresponding item from the end of the list
7, adalah dengan menelepon
for every item in the list:
   swap the item with the corresponding item from the end of the list
8

Latihan. seni lingkaran

Objektif. Tambahkan item ke daftar sebagai respons terhadap input pengguna

Modifikasi program berikut sehingga memungkinkan pengguna menggambar lingkaran di layar sambil menyeret mouse dengan menekan tombol. Jangan hapus atau dengan cara apa pun mencegah fungsi

for every item in the list:
   swap the item with the corresponding item from the end of the list
9 dipanggil setiap kali
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
0 dipanggil

Ini solusinya

Memasukkan ke dalam dan menghapus dari daftar

Ada beberapa operasi daftar lagi yang harus Anda ketahui

Anda dapat menyisipkan item ke dalam daftar dan menghapus item dari daftar menggunakan metode

for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
1 dan operasi
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
2, seperti yang ditunjukkan di

Untuk menghapus item, Anda cukup menulis

for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
_2 diikuti dengan nama daftar dan indeks item yang ingin Anda hapus, sehingga baris
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
4 menghapus item pada indeks 1. Anda juga dapat menghapus bagian daftar yang bersebelahan, menggunakan notasi titik dua. Dalam contoh kita,
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
_5 menghapus item mulai dari indeks 1 dan naik ke—namun tidak termasuk—indeks 4. Secara umum, jika Anda menulis
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
6, Anda menghapus item dari indeks i hingga indeks j − 1

Untuk memasukkan ke dalam daftar, Anda memanggil metode

for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
1. Metode ini membutuhkan dua parameter. indeks item yang ingin Anda sisipkan sebelumnya, dan item yang akan disisipkan. Jadi saat kita memanggil
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
_8, kita memasukkan sebelum item pada indeks 3 (
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
9). Jika Anda memberikan
for the first half of the items in the list:
   swap the item with the corresponding item from the second half of the list
1 indeks di luar akhir daftar, seperti pada
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
1, maka itu seperti operasi
temperatures = [9, 14, 18, 12, 4, 16, -11]
5

Kami sering menggunakan loop untuk bekerja dengan item dari daftar saat memprogram. Bagian ini memperkenalkan jenis perulangan baru, yang disebut perulangan-for, yang sangat cocok untuk menangani item-item dari sebuah daftar. Apa pun yang dapat Anda selesaikan dengan for-loop, Anda juga dapat melakukannya dengan while-loop, jadi kami tidak mendapatkan kekuatan lagi dari for-loop. Tetapi kita akan melihat bahwa mereka lebih mudah dibaca dan diketik. Alternatif, cara yang lebih singkat untuk mengekspresikan hal yang sama dalam kode disebut gula sintaksis, karena itu hanya pemanis tambahan

Sebelum kita membahas for-loop, mari kita lihat contoh lain dengan while-loop. Kasus yang sangat umum adalah ketika Anda ingin menggunakan setiap item dalam daftar, tetapi tidak ingin benar-benar mengubah daftar tersebut. Berikut adalah contoh mencetak semua item dari daftar

Anda mungkin memperhatikan bahwa dalam loop di atas, variabel

for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
3 tidak pernah digunakan sendiri; . Anda tidak pernah mencetak
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
_3, Anda tidak menghitung apa pun dengannya, dan Anda benar-benar tidak peduli berapa nilainya. Anda hanya ingin mendapatkan setiap item dari daftar
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
5 dan mencetaknya. Anda juga tidak terlalu peduli dengan
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
6. Ya, Anda perlu menggunakannya untuk mengetahui kapan harus mengakhiri perulangan while, tetapi siapa yang peduli berapa nilai sebenarnya? . Tidak ada alasan sebenarnya untuk tidak langsung mencetak
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
8, tetapi variabel sementara ini akan membantu memperjelas penjelasan for-loop. )

Jika Anda menjelaskan metode untuk mencetak nama bulan pada tingkat tinggi, Anda dapat mengatakan (dalam bahasa Inggris) sesuatu seperti, “Untuk setiap item dari daftar

for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
5, cetak item itu. ” Anda mungkin tidak memberi tahu saya tentang menginisialisasi
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
3, tentang detail mekanis penambahan
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
3 setiap kali melalui loop, atau tentang membandingkan
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
3 dengan
for the first half (rounded down) of the items in the list:
   swap the item with the corresponding item from the second half of the list
6. Manusia tidak berpikir seperti itu. Kami dapat menyembunyikan detail ini dengan for-loop

For-loop mengulangi item dalam daftar, membuat setiap item tersedia secara berurutan. Ini contohnya, di moons_for. py, yang bertindak identik dengan contoh dengan while-loop

Dengan for-loop, Anda tidak perlu membuat variabel indeks, menaikkan variabel indeks, atau membandingkan variabel indeks dengan panjang daftar. Python melakukan hal itu untuk Anda secara internal, di belakang layar. Ada beberapa hal penting yang perlu diperhatikan

  1. Jika Anda benar-benar menginginkan nilai indeks, Anda tidak dapat menentukannya selama for-loop. Anda harus menggunakan while-loop

  2. Anda tidak dapat mengubah daftar

    for the first half (rounded down) of the items in the list:
       swap the item with the corresponding item from the second half of the list
    _5 selama for-loop. Setiap item disalin ke dalam variabel sementara
    for the first half (rounded down) of the items in the list:
       swap the item with the corresponding item from the second half of the list
    7. Anda dapat mengubah
    for the first half (rounded down) of the items in the list:
       swap the item with the corresponding item from the second half of the list
    _7 jika Anda mau, tetapi itu tidak akan mengubah daftar. Jika Anda ingin mengubah daftar, Anda harus menggunakan while-loop

Karena perulangan-for lebih sederhana dan lebih mudah dibaca, Anda harus menggunakan perulangan-for dalam kode Anda di mana pun tujuannya adalah merujuk ke item daftar, tetapi tanpa mengubah daftar. Jika Anda ingin mengubah item mana yang ada dalam daftar, Anda harus menggunakan while-loop

Menggunakan l[index] = l[right_index] l[right_index] = l[index]_7 untuk membuat daftar nilai l[index] = l[right_index] l[right_index] = l[index]8

Beberapa fungsi mengembalikan daftar. Misalnya, fungsi Python bawaan

l[index] = l[right_index]
l[right_index] = l[index]
7 memberikan int dalam rentang yang ditentukan. (Dengan built-in, maksud saya Anda bahkan tidak perlu mengimpornya dari mana saja. ) Misalnya,
[3, 4, 5, 6, 7, 8, 9]
0 memberikan daftar

[3, 4, 5, 6, 7, 8, 9]

Perhatikan bahwa angka terakhir dalam daftar adalah 9, bukan 10

l[index] = l[right_index]
l[right_index] = l[index]
7 dapat menghemat beberapa pengetikan jika Anda ingin menghitung bilangan bulat. Ini sebuah contoh

Jika Anda hanya memberikan fungsi

l[index] = l[right_index]
l[right_index] = l[index]
_7 hanya satu parameter, maka daftar akan dimulai dari 0

Dengan memanggil

IndexError: list index out of range
_1 dan
l[index] = l[right_index]
l[right_index] = l[index]
7, Anda dapat menggunakan for-loop untuk mengindeks ke dalam daftar. Kemudian Anda dapat mengubah nilai dalam daftar, karena Anda memiliki file index. Misalnya, berikut adalah dua cara untuk menggandakan setiap angka dalam daftar

dan

Latihan. gelembung

Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Objektif. Akses dan ubah daftar dalam for loop menggunakan variabel indeks

Program berikut menambahkan koordinat x dan y ke daftar untuk merepresentasikan gelembung dalam air. Tulis for-loop yang menggambar semua gelembung, dan memindahkan setiap gelembung ke atas satu piksel setelah digambar. Perhatikan bahwa karena gelembung awalnya ditempatkan di bawah bagian bawah layar, Anda tidak akan melihat apa pun pada awalnya; . Untuk debugging, Anda dapat meningkatkan frekuensi gelembung dan menempatkannya lebih tinggi di layar

Ini solusinya

Anda dapat memperlakukan string seperti daftar (semacam)

Anda bisa mendapatkan karakter dari sebuah string hampir seolah-olah string itu adalah sebuah daftar

Anda bahkan dapat mengulang karakter dalam sebuah string,

Anda mungkin berpikir Anda juga bisa mengubah karakter dalam string dengan cara ini. Itu tidak akan berhasil.

[3, 4, 5, 6, 7, 8, 9]
5 akan memberikan kesalahan. String python tidak dapat diubah;

Jika Anda ingin melakukan sesuatu seperti mengubah huruf ketiga menjadi r, Anda harus membuat string yang sama sekali baru, menggunakan string lama dan huruf baru. Kita akan melihat bagaimana melakukannya nanti di kursus

Bagaimana itu bekerja. Daftar di memori

Pertimbangkan saat pertama kali kita menetapkan variabel, seperti

[3, 4, 5, 6, 7, 8, 9]
6. Python tahu bahwa
[3, 4, 5, 6, 7, 8, 9]
_7 adalah bilangan bulat, dan Python tahu bahwa empat byte memori biasanya cukup untuk menyimpan bilangan bulat itu. Python mengalokasikan empat byte tersebut, dan menyalin kode biner yang sesuai dengan nilai 5 ke dalam byte tersebut. Kami mengatakan bahwa nilai 5 disimpan dalam variabel

Sesuatu yang berbeda terjadi ketika Anda membuat daftar. Ruang dalam memori dialokasikan untuk daftar di tempat lain selain di alamat variabel. Variabel hanya menyimpan alamat daftar. Mari kita lihat sebuah contoh

mice = ["Minnie", "Mickey", "Mighty"]

Inilah yang terjadi. Pertama, Python melihat daftar literal di sisi kanan tanda sama dengan. Python menemukan ruang memori untuk daftar data

[3, 4, 5, 6, 7, 8, 9]
8 di area memori yang disebut heap. Daftar baru ini sekarang memiliki alamat. Katakanlah alamat data daftar itu adalah 1000

Sekarang Python melihat ke sisi kiri operator penugasan. Python harus membuat variabel baru, ________76______9. Python menyalin nilai 1000—alamat daftar—ke dalam variabel

[3, 4, 5, 6, 7, 8, 9]
9. Inilah cara Anda memikirkannya

Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Saya menggambar panah untuk menunjukkan bahwa variabel

[3, 4, 5, 6, 7, 8, 9]
9 sebenarnya hanya memberi tahu kita bahwa daftar itu sendiri ada di tempat lain, dalam hal ini di alamat 1000

Catatan penting. Akan salah untuk mengatakan bahwa variabel

[3, 4, 5, 6, 7, 8, 9]
9 berisi daftar. Dalam contoh kita sebelumnya,
[3, 4, 5, 6, 7, 8, 9]
_6, variabel
[3, 4, 5, 6, 7, 8, 9]
7 benar-benar mengandung nilai 5 (atau setidaknya representasi binernya), bukan alamat atau yang lainnya. Namun, untuk daftar, variabel yang menamai daftar—
[3, 4, 5, 6, 7, 8, 9]
9 dalam contoh ini—hanya berisi alamat data daftar, bukan data daftar itu sendiri

Kami tidak dapat menyimpan daftar dalam variabel, karena daftar dapat memiliki ukuran apa pun. Tapi seperti nilai integer, semua alamat memiliki ukuran yang sama, jadi kita tahu berapa banyak ruang dalam variabel yang digunakan untuk sebuah alamat

Aliasing dan operator penugasan

Karena alamat daftar disimpan dalam variabel, daripada benar-benar menyimpan data daftar itu sendiri dalam variabel, properti penting mengikuti. variabel apa pun yang menyimpan alamat itu dapat digunakan untuk mengubah daftar. Lihatlah contoh ini

Program ini mencetak

worst_things_about_cs1 = []
0

Perhatikan bahwa

mice = ["Minnie", "Mickey", "Mighty"]
_6 tidak lagi
mice = ["Minnie", "Mickey", "Mighty"]
7;

Apa yang terjadi disini?

Operator penugasan selalu menyalin nilai variabel. Tetapi dalam kasus ini, nilai variabel

worst_things_about_cs1 = []
01 adalah beberapa alamat (mungkin 2000), bukan daftar itu sendiri. Daftar tidak disalin oleh operator penugasan di
worst_things_about_cs1 = []
02. Hanya alamat yang disalin. Tidak ada dua daftar berbeda di heap;

Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Sekarang, ketika item pada indeks 3 dalam daftar yang alamatnya ada di

worst_things_about_cs1 = []
04 diubah menjadi
worst_things_about_cs1 = []
06, satu-satunya daftar di alamat 2000 berubah

Bagaimana Anda membuat daftar kosong untuk satu lingkaran dengan python?

Saya menulis item pada indeks 3 dengan huruf miring hanya untuk menyorotnya. Saat kami mencetak daftar menggunakan variabel

worst_things_about_cs1 = []
_01 (yang berisi alamat dari daftar yang sama), kami melihat bahwa daftar telah berubah

Anda bisa memikirkannya seperti ini. Katakanlah Anda memiliki nomor rekening tabungan. Anda dapat menganggap nomor itu sebagai alamat yang digunakan untuk merujuk pada tumpukan uang di brankas bank di suatu tempat. Sekarang jika bank memberi saya alamat yang sama (nomor rekening tabungan), maka saya dapat menggunakan nomor itu untuk menarik setengah dari uangnya. Ketika Anda pergi untuk melihat rekening, setengah dari uang itu hilang

Ketika dua nama merujuk pada hal yang sama, nama-nama itu disebut alias satu sama lain. dr. Dre dan Andre Ramelle Young merujuk pada orang yang sama. Aliasing dapat menjadi sumber bug yang sulit ditemukan. (Anda mungkin menganggapnya sebagai bug jika saya menarik setengah dari uang Anda dari rekening tabungan Anda, dan Anda bahkan tidak tahu bahwa kami memiliki nomor rekening yang sama. )

Untuk bilangan bulat, float, atau boolean, operator penugasan membuat salinan data baru, bukan salinan alamat, jadi untuk tipe primitif ini, mengubah nilai satu variabel tidak pernah berpengaruh pada nilai variabel lain. Untuk string, operator penugasan menyalin alamat, tetapi karena string tidak dapat diubah, Anda tidak akan pernah menyadari bahwa terjadi aliasing

Mengapa perbedaan antara bagaimana tipe dan daftar primitif diperlakukan? . Menyalin alamat daftar mungkin sudah cukup. Kita akan lihat nanti bahwa kita masih bisa memberi tahu Python bahwa kita benar-benar ingin menyalin daftar itu sendiri, dan bukan hanya alamatnya, menggunakan fungsi khusus

worst_things_about_cs1 = []
08

Meneruskan daftar ke fungsi (dan aliasing)

Jika Anda meneruskan alamat daftar ke suatu fungsi, maka fungsi tersebut dapat mengubah data di alamat tersebut. Fungsi tidak mengubah nilai parameter yang diteruskan ke sana, yang hanya merupakan beberapa alamat dari sebuah daftar. Tetapi data yang terdapat dalam daftar itu sendiri diubah

Latihan. fungsi untuk membalikkan daftar

Objektif. Ambil penerapan algoritme daftar, dan bungkus dalam fungsi yang menjadikan daftar sebagai parameter

Membalik daftar sepertinya hal yang berguna untuk dilakukan; . Aliasing memungkinkan kita memindahkan kode itu ke dalam suatu fungsi. Tulis fungsi

worst_things_about_cs1 = []
_09 yang mengambil satu parameter, alamat daftar untuk dibalik, dan membalikkan daftar itu pada tempatnya. Uji fungsi Anda dengan memanggil
worst_things_about_cs1 = []
_09 pada daftar uji angka

Ini solusinya

Menyalin daftar dengan worst_things_about_cs1 = []08

Terkadang, Anda benar-benar menginginkan salinan daftar. Anda dapat menggunakan fungsi

worst_things_about_cs1 = []
_08 untuk membuat salinan daftar. Fungsi
worst_things_about_cs1 = []
08 menyalin semua data dalam daftar ke area baru di heap, dan mengembalikan alamat data baru

Menyortir daftar dengan worst_things_about_cs1 = []_14

Python berisi fungsi bawaan yang berguna,

worst_things_about_cs1 = []
14, yang membuat salinan terurut dari daftar asli, dan mengembalikan daftar itu. Fungsi
worst_things_about_cs1 = []
14 tidak mengubah daftar asli. Lihatlah contoh ini

Jalankan, dan lihat hasilnya

Bagaimana cara kerja fungsi

worst_things_about_cs1 = []
_14? . Kita akan melihat nanti algoritma pengurutan sederhana yang disebut pengurutan pilihan

Dimungkinkan untuk menyimpan berbagai jenis item dalam satu daftar. Namun, Anda harus menghindari melakukannya sebagian besar waktu

worst_things_about_cs1 = []
_1

Masalahnya adalah jika Anda ingin menerapkan beberapa operasi ke semua item dari daftar, Anda tidak dapat memastikan apakah masuk akal untuk melakukannya. Bayangkan Anda mencoba mengurutkan

worst_things_about_cs1 = []
_18 menggunakan fungsi
worst_things_about_cs1 = []
14. Apa hasilnya? . Mengandalkan perilaku mengejutkan yang tidak dapat Anda prediksi adalah praktik pemrograman yang buruk

Bagaimana Anda membuat daftar baru dalam satu lingkaran dengan Python?

Ada beberapa cara berbeda untuk membuat daftar dengan Python. .
Instansiasi daftar kosong
Mengulangi iterable atau berbagai elemen
Tambahkan setiap elemen ke akhir daftar

Bisakah Anda menginisialisasi daftar dalam for loop?

SAMPAI. Anda dapat menggunakan daftar penginisialisasi secara langsung dalam for loop berbasis rentang .

Bagaimana Anda melewati daftar kosong dengan Python?

Menggunakan tanda kurung siku [] . Untuk mendeklarasikan daftar kosong cukup tetapkan variabel dengan tanda kurung siku .

Perintah mana yang akan membuat daftar kosong?

1. Menggunakan tanda kurung siku [] Dalam metode ini, daftar kosong dapat dibuat menggunakan tanda kurung siku [] dengan menempatkan urutan elemen di dalam tanda kurung siku. Ini dapat dilakukan dengan hanya menugaskan variabel dengan tanda kurung siku [].