Apakah Anda menyelam lebih dalam ke daftar Python dan ingin belajar tentang berbagai cara untuk membalikkannya? . Di sini, Anda akan belajar tentang beberapa alat dan teknik Python yang berguna untuk membalik daftar atau memanipulasinya dalam urutan terbalik. Pengetahuan ini akan melengkapi dan meningkatkan keterampilan terkait daftar Anda dan membuat Anda lebih mahir dengannya
Bonus Gratis. Klik di sini untuk mendapatkan Cheat Sheet Python dan mempelajari dasar-dasar Python 3, seperti bekerja dengan tipe data, kamus, daftar, dan fungsi Python
Membalikkan Daftar Python
Terkadang Anda perlu memproses daftar Python mulai dari elemen terakhir hingga elemen pertama—dengan kata lain, dalam urutan terbalik. Secara umum, ada dua tantangan utama terkait bekerja dengan daftar secara terbalik
Membalik daftar di tempat
Membuat salinan terbalik dari daftar yang ada
Untuk memenuhi tantangan pertama, Anda dapat menggunakan
0 atau loop yang menukar item berdasarkan indeks. Untuk yang kedua, Anda dapat menggunakan atau a. Di bagian selanjutnya, Anda akan mempelajari berbagai cara untuk mencapai keduanya dalam kode AndaHilangkan iklan
Membalikkan Daftar di Tempat
Seperti tipe lainnya, daftar Python mengimplementasikan
0 pada daftar yang sudah ada, metode membalikkannya pada tempatnya. Dengan cara ini, saat Anda mengakses daftar lagi, Anda mendapatkannya dalam urutan terbalik. Perhatikan bahwa
0 beroperasi dengan efek samping, mengubah daftar yang mendasarinya
Catatan. Sebagian besar contoh dalam tutorial ini menggunakan daftar angka sebagai masukan. Namun, alat dan teknik yang sama berlaku untuk semua jenis objek Python, seperti daftar string
Oke. Itu cepat dan mudah. Sekarang, bagaimana Anda bisa membalikkan daftar dengan tangan?
Python menyediakan indeks positif berbasis nol untuk menjalankan urutan dari kiri ke kanan. Ini juga memungkinkan Anda menavigasi urutan dari kanan ke kiri menggunakan indeks negatif
Diagram ini menunjukkan bahwa Anda dapat mengakses elemen pertama dari daftar (atau urutan) menggunakan
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
0 di iterasi pertama. Kemudian Anda dapat mengganti elemen pada indeks
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
1 dengan cerminnya pada indeks
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
2 dan seterusnya sampai Anda mendapatkan daftar terbalik
Inilah representasi dari keseluruhan proses
Untuk menerjemahkan proses ini ke dalam kode, Anda dapat menggunakan loop
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
4 pada paruh pertama daftar, yang dapat Anda peroleh dengan
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
5. Kemudian Anda dapat menggunakan pernyataan penugasan paralel untuk menukar elemen, seperti ini
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
5. Setiap iterasi menukar item dari paruh pertama daftar dengan pasangan cerminnya di paruh kedua. Ekspresi
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
Selain algoritme di atas, yang memanfaatkan substitusi indeks, ada beberapa cara berbeda untuk membalikkan daftar secara manual. Misalnya, Anda dapat menggunakan
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
1, dan seterusnya. Di akhir putaran, Anda mendapatkan daftar terbalik di tempatnyaHilangkan iklan
Membuat Daftar Terbalik
Jika Anda ingin membuat salinan terbalik dari daftar yang ada dengan Python, Anda dapat menggunakan
8 sebagai argumen. Kemudian Anda menyimpan iterator yang dihasilkan di ________46______9. Panggilan ke
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
0 menggunakan iterator dan mengembalikan daftar baru yang berisi item yang sama dengan
1 adalah bahwa ini tidak membuat salinan dari daftar input, jadi perubahannya memengaruhi iterator yang dihasilkan
>>>
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
_1 untuk mendapatkan iterator yang sesuai atas item di
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
4. Kemudian Anda memodifikasi buah terakhir. Perubahan ini memengaruhi iterator. Anda dapat mengonfirmasinya dengan menelepon untuk mendapatkan item pertama di
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
6
Jika Anda perlu mendapatkan salinan
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
_0 menggunakan iterator yang dihasilkan dari panggilan
_1 dapat mengambil objek apa pun yang mengimplementasikan suatu metode atau yang mendukung protokol urutan, yang terdiri dari metode dan metode khusus. Jadi,
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
1. Fungsi melakukan tugasnya seperti yang diharapkan, dan Anda mendapatkan versi terbalik dari input data
Poin penting lainnya untuk disoroti adalah Anda tidak dapat menggunakan iterator sewenang-wenang
>>>
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
_
Dalam contoh ini, buat iterator di atas daftar angka Anda. Saat Anda menelepon
Iterator menerapkan metode khusus untuk menelusuri data yang mendasarinya. Mereka juga diharapkan menerapkan metode khusus untuk mengembalikan instance iterator saat ini. Namun, mereka tidak diharapkan untuk menerapkan
>>> digits={0,1,2,3,4,5,6,7,8,9}>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'set' object is not reversible
1 tidak bekerja untuk mereka. Jika Anda perlu membalikkan iterator seperti ini, Anda harus terlebih dahulu mengonversinya menjadi daftar menggunakan
>>> digits=iter([0,1,2,3,4,5,6,7,8,9])>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'list_iterator' object is not reversible
0
Hal lain yang perlu diperhatikan adalah bahwa Anda tidak dapat menggunakan
14. Namun, sintaks tersebut awalnya tidak berfungsi pada tipe bawaan, seperti daftar, tupel, dan string. memperluas sintaks ke tipe bawaan, sehingga Anda dapat menggunakan
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
1, itulah sebabnya operasi pemotongan normal mengekstrak item dari kiri ke kanan
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
1
Catatan. Anda dapat menghilangkan titik dua kedua (
_28) di operator pemotongan ketika nilai default (
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
0, maka Anda mendapatkan potongan dengan item dalam urutan terbalik
41) kembali ke ujung kiri karena Anda menghilangkan offset kedua. Keajaiban lainnya dalam contoh ini berasal dari penggunaan nilai
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
>>> fruits=["apple","banana","orange"]>>> reversed_fruit=reversed(fruits)# Get the iterator>>> fruits[-1]="kiwi"# Modify the last item>>> next(reversed_fruit)# The iterator sees the change'kiwi'
_1 lebih efisien dalam hal waktu eksekusi dan penggunaan memori. Ini juga lebih mudah dibaca dan eksplisit. Jadi ini adalah poin yang perlu dipertimbangkan dalam kode Anda
Teknik lain untuk membuat salinan terbalik dari daftar yang ada adalah dengan menggunakan. Tanda tangan dari fungsi bawaan ini adalah seperti ini
Fungsi ini bekerja mirip dengan operator pengindeksan. Dibutuhkan tiga argumen dengan arti yang mirip dengan yang digunakan dalam operator pemotongan dan mengembalikan objek yang mewakili kumpulan indeks yang dikembalikan oleh
8, mulai dari ujung kanan kembali ke ujung kiri, dan mengembalikan salinan terbalik dari daftar targetHilangkan iklan
Menghasilkan Daftar Terbalik dengan Tangan
Sejauh ini, Anda telah melihat beberapa alat dan teknik untuk membalikkan daftar atau membuat salinan terbalik dari daftar yang ada. Sebagian besar waktu, alat dan teknik ini adalah cara yang tepat untuk membalikkan daftar dengan Python. Namun, jika Anda perlu membalikkan daftar dengan tangan, maka akan bermanfaat bagi Anda untuk memahami logika di balik proses tersebut
Di bagian ini, Anda akan mempelajari cara membalik daftar Python menggunakan loop, rekursi, dan pemahaman. Idenya adalah untuk mendapatkan daftar dan membuat salinannya dalam urutan terbalik
Menggunakan Lingkaran
Teknik pertama yang akan Anda gunakan untuk membalikkan daftar melibatkan
_3 seperti pada contoh di atas memiliki kekurangan yang signifikan. Masukkan operasi di ujung kiri daftar Python diketahui tidak efisien mengenai waktu eksekusi. Itu karena Python perlu memindahkan semua item satu langkah ke belakang untuk memasukkan item baru di posisi pertama
Menggunakan Rekursi
Anda juga dapat menggunakan rekursi untuk membalik daftar Anda. Rekursi adalah saat Anda menentukan fungsi yang memanggil dirinya sendiri. Ini menciptakan loop yang bisa menjadi tidak terbatas jika Anda tidak memberikan kasus dasar yang menghasilkan hasil tanpa memanggil kembali fungsi tersebut
Anda memerlukan kasing dasar untuk mengakhiri loop rekursif. Ketika datang ke daftar pembalik, kasing dasar akan tercapai ketika panggilan rekursif sampai ke akhir daftar input. Anda juga perlu mendefinisikan kasus rekursif, yang mereduksi semua kasus berturut-turut menuju kasus dasar dan, oleh karena itu, ke akhir perulangan
Inilah cara Anda dapat menentukan fungsi rekursif untuk mengembalikan salinan terbalik dari daftar yang diberikan
81 hanyalah tipuan yang dimaksudkan untuk menunjukkan bagaimana panggilan berikutnya mengurangi daftar input ke kasus dasar. Lanjutkan dan batalkan komentar pada baris untuk melihat apa yang terjadiHilangkan iklan
Menggunakan Pemahaman Daftar
Jika Anda bekerja dengan daftar dengan Python, Anda mungkin ingin mempertimbangkan untuk menggunakan pemahaman daftar. Alat ini cukup populer di ruang Python karena mewakili cara Pythonic untuk memproses daftar
Berikut adalah contoh cara menggunakan pemahaman daftar untuk membuat daftar terbalik
8 secara terbalik, membuat daftar terbalik baru dalam proses
Iterasi Melalui Daftar secara Terbalik
Hingga saat ini, Anda telah mempelajari cara membuat daftar terbalik dan juga cara membalikkan daftar yang sudah ada, baik dengan menggunakan alat yang dirancang khusus untuk menyelesaikan tugas itu atau dengan menggunakan solusi kode tangan Anda sendiri
Dalam pemrograman sehari-hari, Anda mungkin menemukan bahwa mengulangi daftar dan urutan yang ada dalam urutan terbalik, biasanya dikenal sebagai iterasi terbalik, adalah persyaratan yang cukup umum. Jika itu kasus Anda, maka Anda memiliki beberapa opsi. Tergantung pada kebutuhan spesifik Anda, Anda dapat menggunakan
>>> digits={0,1,2,3,4,5,6,7,8,9}>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'set' object is not reversible
_4
Di beberapa bagian berikut, Anda akan mempelajari tentang semua opsi ini dan bagaimana opsi tersebut dapat membantu Anda mengulang daftar dalam urutan terbalik
1. Fungsi bawaan ini dirancang khusus untuk mendukung iterasi terbalik. Dengan daftar sebagai argumen, ia mengembalikan iterator yang menghasilkan item daftar masukan dalam urutan terbalik
_1 dengan jelas mengungkapkan maksudnya, dengan detail komunikasi yang halus bahwa fungsi tersebut tidak menghasilkan efek samping apa pun. Dengan kata lain, itu tidak mengubah daftar masukan
Loop juga efisien dalam hal penggunaan memori karena
1 mengembalikan iterator yang menghasilkan item sesuai permintaan tanpa menyimpan semuanya dalam memori pada saat yang sama. Sekali lagi, detail halus yang perlu diperhatikan adalah jika daftar input berubah selama iterasi, maka iterator akan melihat perubahannya
Pendekatan kedua untuk membalikkan iterasi adalah dengan menggunakan sintaks extended slicing yang Anda lihat sebelumnya. Sintaks ini tidak mendukung efisiensi memori, keindahan, atau kejelasan. Tetap saja, ini menyediakan cara cepat untuk mengulang salinan terbalik dari daftar yang ada tanpa risiko terpengaruh oleh perubahan dalam daftar asli
Saat Anda mengiris daftar seperti dalam contoh ini, Anda membuat salinan terbalik dari daftar asli. Awalnya, kedua daftar berisi referensi ke grup item yang sama. Namun, jika Anda menetapkan nilai baru ke item tertentu dalam daftar asli, seperti di
_1 jauh lebih mudah dibaca, berjalan lebih cepat, dan menggunakan lebih sedikit memori. Namun, itu dipengaruhi oleh perubahan dalam daftar input
Anda dapat memanfaatkan pemotongan semacam ini untuk memodifikasi daftar asli dengan aman saat Anda mengulangi item lamanya dalam urutan terbalik. Misalnya, Anda perlu mengulangi daftar angka dalam urutan terbalik dan mengganti setiap angka dengan nilai kuadratnya. Dalam hal ini, Anda dapat melakukan sesuatu seperti ini
_1 dengan daftar sebagai argumen memicu panggilan implisit ke
>>> digits={0,1,2,3,4,5,6,7,8,9}>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'set' object is not reversible
4 pada daftar masukan
Metode khusus ini mengembalikan iterator pada item daftar saat ini dalam urutan terbalik. Namun,
>>> digits={0,1,2,3,4,5,6,7,8,9}>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'set' object is not reversible
4 tidak dimaksudkan untuk digunakan secara langsung. Sebagian besar waktu, Anda akan menggunakannya untuk melengkapi kelas Anda sendiri dengan kemampuan iterasi terbalik
Misalnya, Anda ingin mengulangi rentang angka titik-mengambang. Anda tidak dapat menggunakan
Kelas ini tidak sempurna. Ini hanya versi pertama Anda. Namun, ini memungkinkan Anda untuk beralih melalui interval angka titik-mengambang menggunakan nilai kenaikan tetap,
>>> digits={0,1,2,3,4,5,6,7,8,9}>>> reversed(digits)Traceback (most recent call last):
File "", line 1, in TypeError: 'set' object is not reversible
4 Anda untuk menyediakan fungsionalitas iterasi terbalik. Dengan cara ini, Anda memiliki iterator floating-point yang berfungsi
Membalikkan Daftar Python. Ringkasan
Hingga saat ini, Anda telah belajar banyak tentang membalik daftar menggunakan berbagai alat dan teknik. Berikut adalah tabel yang merangkum poin-poin penting yang telah Anda bahas
44LoopList CompRecursionMemodifikasi daftar di tempat✔❌❌✔/❌❌❌Membuat salinan daftar❌❌✔✔/❌✔✔Cepat✔✔✔❌❌✔❌Bersifat universal❌✔✔✔✔✔
Melihat sekilas ringkasan ini akan memungkinkan Anda memutuskan alat atau teknik mana yang akan digunakan saat Anda membalikkan daftar, membuat salinan terbalik dari daftar yang ada, atau mengulangi daftar Anda dalam urutan terbalik
Menyortir Daftar Python dalam Urutan Terbalik
Opsi lain yang menarik untuk membalikkan daftar dengan Python adalah menggunakan
_2 adalah untuk mengurutkan item dari daftar. Penyortiran dilakukan di tempat, sehingga tidak membuat daftar baru. Jika Anda menyetel argumen kata kunci
33, maka Anda mendapatkan daftar yang diurutkan dalam urutan menurun atau terbalik
>>> ________27______8
Sekarang daftar Anda sepenuhnya diurutkan dan juga dalam urutan terbalik. Ini cukup nyaman saat Anda bekerja dengan beberapa data dan Anda perlu mengurutkannya dan membalikkannya pada saat yang bersamaan
Di sisi lain, jika Anda ingin mengulangi daftar yang diurutkan dalam urutan terbalik, maka Anda dapat menggunakan
3 memungkinkan Anda mengurutkan iterables dalam urutan menurun, bukan dalam urutan menaik. Jadi, jika Anda perlu membuat daftar terurut dalam urutan terbalik, maka
Membalikkan dan bekerja dengan daftar dalam urutan terbalik mungkin merupakan tugas yang cukup umum dalam pekerjaan Anda sehari-hari sebagai pembuat kode Python. Dalam tutorial ini, Anda memanfaatkan beberapa alat dan teknik Python untuk membalik daftar Anda dan mengelolanya dalam urutan terbalik
Semua pengetahuan ini membantu Anda meningkatkan keterampilan terkait daftar Anda. Ini memberi Anda alat yang diperlukan untuk menjadi lebih mahir saat Anda bekerja dengan daftar Python
Tandai sebagai Selesai
🐍 Trik Python 💌
Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python
Kirimi Saya Trik Python »
Tentang Leodanis Pozo Ramos
Leodanis adalah seorang insinyur industri yang menyukai Python dan pengembangan perangkat lunak. Dia adalah pengembang Python otodidak dengan pengalaman lebih dari 6 tahun. Dia adalah seorang penulis teknis yang rajin dengan semakin banyak artikel yang diterbitkan di Real Python dan situs lainnya
» Lebih lanjut tentang Leodanis
Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah
Aldren
Bartosz
Joanna
Yakub
Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata
Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista
Tingkatkan Keterampilan Python Anda »
Guru Keterampilan Python Dunia Nyata Dengan Akses Tak Terbatas ke Real Python
Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista
Tingkatkan Keterampilan Python Anda »
Bagaimana menurut anda?
Nilai artikel ini
Tweet Bagikan Bagikan Email
Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?
Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami
Apa yang Anda maksud dengan pengindeksan terbalik?
. daftar (sebagai indeks atau glosarium) di mana item disusun menurut abjad di bawah elemen terakhirnya .
Bagaimana cara kerja pengindeksan terbalik di Python?
Untuk membalikkan string, kita cukup membuat irisan yang dimulai dengan panjang string, dan berakhir pada indeks 0 . Pernyataan irisan berarti mulai dari panjang string, berakhir pada posisi 0, bergerak dengan langkah -1 (atau mundur satu langkah).
Bagaimana Anda membalikkan pengindeksan dalam daftar Python?
Cara terbaik untuk membalikkan daftar menggunakan slicing dengan Python adalah menggunakan pengindeksan negatif . Ini memungkinkan Anda untuk melangkahi daftar menggunakan -1, dengan menggunakan daftar kode[. -1].
Apa yang dilakukan reverse () dengan Python?
Python terbalik()
. computes the reverse of a given sequence object and returns it in the form of a list.