[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"site-header":3,"site-footer-license":37,"article-tipe-data-list-pada-python-3-with-latest":41},{"navigations":4},[5,20],{"collection":6,"item":7},"series",{"__typename":6,"title":8,"slug":9,"children_series":10},"Artikel","all",[11,14,17],{"title":12,"slug":13},"Algoritma dan Struktur Data","algoritma-struktur-data",{"title":15,"slug":16},"Konsep Dasar Pemrograman","konsep-dasar-pemrograman",{"title":18,"slug":19},"Kecerdasan Artifisial","kecerdasan-artifisial",{"collection":6,"item":21},{"__typename":6,"title":22,"slug":23,"children_series":24},"Tutorial","tutorial",[25,28,31,34],{"title":26,"slug":27},"Belajar Java","belajar-java",{"title":29,"slug":30},"Belajar Pascal","belajar-pascal",{"title":32,"slug":33},"Belajar Python","belajar-python",{"title":35,"slug":36},"Belajar Golang","belajar-golang",{"name":38,"url":39,"show":40},"CC BY-SA","https://creativecommons.org/licenses/by-sa/4.0/",false,{"article":42,"renderedBody":140,"renderedTakeaway":141,"latestArticles":142,"toc":193},{"id":43,"title":44,"slug":45,"excerpt":46,"published_at":47,"thumbnail_image":48,"tags":50,"reading_time":54,"takeway":55,"body":56,"authors":57,"series":63},"89","Tipe Data List pada Python 3","tipe-data-list-pada-python-3","Pada Python, list merupakan tipe data yang dapat memuat banyak nilai. Dalam bahasa lain mungkin lebih familiar dengan sebutan array.","2021-03-19T14:43:52.000Z",{"id":49},"0273fee7-cfd4-4035-81a8-9de49586fee7",[51,52,53],"python","tipe-data","list",4,null,"Sekarang kita akan membahas tentang tipe data yang dapat memuat banyak item di dalamnya. Tipe data ini disebut dengan nama **list** pada python 3.\n\n## Tentang Tipe Data List\n\nPada Python, **list** merupakan tipe data yang dapat memuat **banyak nilai**. Dalam bahasa pemrograman lain mungkin lebih familiar dengan sebutan **array**.\n\nVariable list dibuat dengan menggunakan tanda kurung siku (\\[...])\n\n```\n>>> nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n>>> print(nama_buah)\n[\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n>>> type(nama_buah)\n\u003Cclass 'list'>\n```\n\nPada contoh tersebut, variable **nama_buah** memiliki beberapa item. Yaitu jeruk, semangka, apel, dan pisang.\n\nItem dalam sebuah list dapat berjumlah berapa saja. Bahkan jika tidak ada item sama sekali, selama terdapat tanda kurung siku, maka nilai tersebut termasuk list.\n\n```\n>>> list_kosong = []\n>>> print(list_kosong)\n[]\n>>> type(list_kosong)\n\u003Cclass 'list'>\n```\n\nTuh kan kosong 🙄. List yang tidak memiliki item biasa disebut dengan istilah ***empty list***.\n\n**Kalau kosong gunanya apa dong?** Nanti akan kita bahas lebih lanjut.\n\n## Mengakses Item dalam List\n\nItem dalam list dapat diakses dengan melakukan **pengindeksan**.\n\nPengindeksan dilakukan dengan memanggil nama variable list, diikuti dengan tanda kurung siku dengan nomor indeks.\n\n```\n>>> nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n>>> print(nama_buah[0]) # mengakses item pertama\njeruk\n>>> print(nama_buah[1]) # mengakses item kedua\nsemangka\n```\n\nIndeks pada Python dimulai dengan angka 0 untuk mengakses item pertama. angka 1 untuk item kedua dan seterusnya.\n\nJika indeks yang digunakan lebih dari panjang list, maka akan keluar error.\n\n```\n>>> nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n>>> print(nama_buah[4])\nTraceback (most recent call last):\n  File \"\u003Cstdin>\", line 1, in \u003Cmodule>\nIndexError: list index out of range\n```\n\nMungkin kalian bertanya-tanya.\n\n**\"Kenapa indeks 4 kok error? Panjang list-nya kan 4, seharusnya keluar string 'pisang' dong 🤔\"**\n\nIngat, indeks dalam list dimulai dari **0** untuk mengakses item **pertama**. Indeks **1** digunakan untuk mengakses item **kedua**.\n\nSehingga jika kita menggunakan indeks **4**, maka item yang diakses adalah item **kelima**. Karena pada contoh tersebut hanya ada 4 item, maka item kelima tidak dapat diakses.\n\n## Mengubah Nilai Item dalam List\n\nItem dalam list berlaku selayaknya variable pada umumnya. Kita dapat mengubah nilai dari item tersebut.\n\n```\n>>> daftar_angka = [1, 2, 3, 4, 5]\n>>> print(daftar_angka)\n[1, 2, 3, 4, 5]\n>>> daftar_angka[0] = 11 # mengubah nilai item dalam list\n>>> daftar_angka[2] = 33\n>>> daftar_angka[4] = 55\n>>> print(daftar_angka)\n[11, 2, 33, 4, 55]\n```\n\nPada contoh tersebut, kita mengubah nilai dari item ke 1, 3, dan 5 dari variable **daftar_angka**. Bisa dilihat ya, nilai item telah berubah dari sebelumnya.\n\n## Menambah dan Mengurangi Item dalam List\n\nUntuk menambah dan mengurangi item dalam sebuah list, kita dapat menggunakan method yang sudah tersedia pada python. Yaitu `append` dan `pop`.\n\n> **Method** merupakan fungsi yang terdapat dalam sebuah objek. Pada python, list merupakan sebuah **objek** sehingga memiliki beberapa method selain append dan pop.\n>\n> Untuk pembahasan lebih lanjut tentang **method** dan **object** akan kita bahas lebih pada bagian **OOP dengan Python** di kesempatan selanjutnya.\n\nSekarang mari kita coba membuat *empty list*, dan mengisinya dengan method `append`.\n\n```\n>>> daftar_nama = [] # membuat empty list\n>>> print(daftar_nama)\n[]\n>>> daftar_nama.append(\"budi\") # menambahkan budi pada daftar_nama\n>>> print(daftar_nama)\n['budi']\n>>> daftar_nama.append(\"inva\") # menambahkan inva pada daftar_nama\n>>> print(daftar_nama)\n['budi', 'inva']\n```\n\nDengan menggunakan method append, kita menambahkan item baru di akhir suatu list (indeks terakhir)\n\nLalu, bagaimana cara menghapus item di dalam list?\n\nUntuk melakukan hal ini, kita dapat menggunakan method `pop`\n\n```\n>>> daftar_nama = [\"budi\", \"inva\", \"siko\", \"adi\"]\n>>> print(daftar_nama)\n['budi', 'inva', 'siko', 'adi']\n>>> daftar_nama.pop(2) # menghapus item dengan indeks 2\n>>> print(daftar_nama)\n['budi', 'inva', 'adi']\n>>> daftar_nama.pop() # menghapus item terakhir\n>>> print(daftar_nama)\n['budi', 'inva']\n```\n\nMethod pop ini menerima sebuah argumen berupa angka yang menunjukkan indeks mana yang akan dihapus.\n\nJika indeks ini tidak diisikan, maka secara otomatis item terakhir (paling belakang) dari list yang akan dihapus.\n\nDua method tersebut merupakan sedikit dari sekian banyak method yang bisa kita gunakan pada tipe data list. Selain itu masih ada `clear`, `copy`, `remove`, `insert`, `extend`, dan lain sebagainya.\n\n## Mencari Panjang Sebuah List\n\nSama seperti saat kita mencari [panjang sebuah string](https://invasikode.com/tipe-data-string-python/#Mencari_Panjang_String). Tipe data list juga dapat dicari panjangnya dengan menggunakan fungsi `len()`\n\n```\n>>> angka_genap = [2, 4, 6, 8, 10, 12]\n>>> len(angka_genap) # mendapatkan panjang list angka_genap\n6\n```\n\nBukan hanya itu saja. Fungsi yang satu ini sebenarnya dapat digunakan untuk mencari panjang semua tipe data yang mengandung banyak item. Seperti **tuple** dan **dictionary**.\n\n> **Tuple** merupakan tipe data yang mirip dengan list, hanya saja itemnya tidak dapat diubah. Sedangkan **dictionary** adalah sebuah list yang menerapkan prinsip **key and value** untuk mengakses itemnya. Kita akan bahas lebih lanjut pada kesempatan lain.\n\n## Penutup\n\nCukup sekian untuk kesempatan kali ini. Semoga bermanfaat.\n\nSiap-siap say good bye dengan terminal dan interpreter interaktif. Karena pada kesempatan selanjutnya kita akan mulai melakukan pemrograman python yang sebenarnya 😎.\n\nPada kesempatan berikutnya kita akan mulai mencoba [menjalankan kode python dengan menuliskan script](https://invasikode.com/menjalankan-script-python/) pada file.",[58],{"authors_id":59},{"name":60,"slug":61,"role":62,"profile_picture":55},"Daffa Izzuddin","izzudd","Writer",{"id":64,"title":65,"slug":66,"articles":67,"parent_series":118},"17","Variabel, Tipe Data, dan Operasi","python-variabel-tipe-data",[68,78,87,97,106,115],{"id":69,"title":70,"slug":71,"excerpt":72,"thumbnail_image":73,"tags":75},"84","Membuat dan Menggunakan Variabel pada Python","membuat-dan-menggunakan-variabel-pada-python","Saking simpelnya, bahasa python tidak memiliki aturan khusus untuk membuat variable. Variabel otomatis terbuat ketika melakukan assignment.",{"id":74},"0baa43ef-35ab-49f0-8bcb-f02689edad1c",[51,76,77],"variabel","dasar",{"id":79,"title":80,"slug":81,"excerpt":82,"thumbnail_image":83,"tags":85},"85","Mengenal Tipe Data pada Python 3","mengenal-tipe-data-pada-python-3","Tipe data merupakan atribut yang menandakan perlakuan apa saja yang dapat dilakukan terhadap variabel tersebut.",{"id":84},"89348b31-9609-44b9-b5a7-4a7bc3a00624",[51,52,77,86],"konsep",{"id":88,"title":89,"slug":90,"excerpt":91,"thumbnail_image":92,"tags":94},"86","Tipe Data Numerik pada Python 3","tipe-data-numerik-pada-python-3","Pada python ada beberapa tipe data numerik. Seperti int, float, dan complex. Mari kita bahas lebih lanjut.",{"id":93},"08ffa42a-54a8-4180-b6a4-4b92bb4792b5",[51,52,95,96],"integer","float",{"id":98,"title":99,"slug":100,"excerpt":101,"thumbnail_image":102,"tags":104},"87","Tipe Data String pada Python 3","tipe-data-string-pada-python-3","String pada Python merupakan tipe data yang memuat sebuah atau sekumpulan karakter. String ditandai dengan tanda petik.",{"id":103},"7c605edf-c8bd-4b23-b505-7e9882897e2c",[51,52,105],"string",{"id":107,"title":108,"slug":109,"excerpt":110,"thumbnail_image":111,"tags":113},"88","Tipe Data Boolean pada Python 3","tipe-data-boolean-pada-python-3","Boolean adalah tipe data yang hanya dapat memuat 2 nilai yaitu true dan false. Tipe data ini berguna saat kita berurusan dengan struktur kontrol.",{"id":112},"5ac49a12-9fa1-4642-be34-7b0a4c509587",[51,52,114],"boolean",{"id":43,"title":44,"slug":45,"excerpt":46,"thumbnail_image":116,"tags":117},{"id":49},[51,52,53],{"id":119,"title":32,"slug":33,"parent_series":120,"children_series":122},"10",{"id":121,"title":22,"slug":23,"parent_series":55},"1",[123,127,128,132,136],{"id":124,"title":125,"slug":126,"cover_image":55},"16","Berkenalan dengan Bahasa Python","python-intro",{"id":64,"title":65,"slug":66,"cover_image":55},{"id":129,"title":130,"slug":131,"cover_image":55},"18","Menggunakan Script Python","python-pemrograman-dengan-script",{"id":133,"title":134,"slug":135,"cover_image":55},"19","Struktur Kontrol","python-struktur-kontrol",{"id":137,"title":138,"slug":139,"cover_image":55},"20","Pemrograman Fungsional dengan Python","python-pemrograman-fungsional","\u003Cp>Sekarang kita akan membahas tentang tipe data yang dapat memuat banyak item di dalamnya. Tipe data ini disebut dengan nama \u003Cstrong>list\u003C/strong> pada python 3.\u003C/p>\n\u003Ch2 id=\"tentang-tipe-data-list\">Tentang Tipe Data List\u003C/h2>\n\u003Cp>Pada Python, \u003Cstrong>list\u003C/strong> merupakan tipe data yang dapat memuat \u003Cstrong>banyak nilai\u003C/strong>. Dalam bahasa pemrograman lain mungkin lebih familiar dengan sebutan \u003Cstrong>array\u003C/strong>.\u003C/p>\n\u003Cp>Variable list dibuat dengan menggunakan tanda kurung siku ([...])\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20nama_buah%20%3D%20%5B%22jeruk%22%2C%20%22semangka%22%2C%20%22apel%22%2C%20%22pisang%22%5D%0A%3E%3E%3E%20print(nama_buah)%0A%5B%22jeruk%22%2C%20%22semangka%22%2C%20%22apel%22%2C%20%22pisang%22%5D%0A%3E%3E%3E%20type(nama_buah)%0A%3Cclass%20'list'%3E\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n&gt;&gt;&gt; print(nama_buah)\n[\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n&gt;&gt;&gt; type(nama_buah)\n&lt;class 'list'&gt;\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pada contoh tersebut, variable \u003Cstrong>nama_buah\u003C/strong> memiliki beberapa item. Yaitu jeruk, semangka, apel, dan pisang.\u003C/p>\n\u003Cp>Item dalam sebuah list dapat berjumlah berapa saja. Bahkan jika tidak ada item sama sekali, selama terdapat tanda kurung siku, maka nilai tersebut termasuk list.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20list_kosong%20%3D%20%5B%5D%0A%3E%3E%3E%20print(list_kosong)%0A%5B%5D%0A%3E%3E%3E%20type(list_kosong)%0A%3Cclass%20'list'%3E\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; list_kosong = []\n&gt;&gt;&gt; print(list_kosong)\n[]\n&gt;&gt;&gt; type(list_kosong)\n&lt;class 'list'&gt;\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Tuh kan kosong 🙄. List yang tidak memiliki item biasa disebut dengan istilah \u003Cem>\u003Cstrong>empty list\u003C/strong>\u003C/em>.\u003C/p>\n\u003Cp>\u003Cstrong>Kalau kosong gunanya apa dong?\u003C/strong> Nanti akan kita bahas lebih lanjut.\u003C/p>\n\u003Ch2 id=\"mengakses-item-dalam-list\">Mengakses Item dalam List\u003C/h2>\n\u003Cp>Item dalam list dapat diakses dengan melakukan \u003Cstrong>pengindeksan\u003C/strong>.\u003C/p>\n\u003Cp>Pengindeksan dilakukan dengan memanggil nama variable list, diikuti dengan tanda kurung siku dengan nomor indeks.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20nama_buah%20%3D%20%5B%22jeruk%22%2C%20%22semangka%22%2C%20%22apel%22%2C%20%22pisang%22%5D%0A%3E%3E%3E%20print(nama_buah%5B0%5D)%20%23%20mengakses%20item%20pertama%0Ajeruk%0A%3E%3E%3E%20print(nama_buah%5B1%5D)%20%23%20mengakses%20item%20kedua%0Asemangka\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n&gt;&gt;&gt; print(nama_buah[0]) # mengakses item pertama\njeruk\n&gt;&gt;&gt; print(nama_buah[1]) # mengakses item kedua\nsemangka\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Indeks pada Python dimulai dengan angka 0 untuk mengakses item pertama. angka 1 untuk item kedua dan seterusnya.\u003C/p>\n\u003Cp>Jika indeks yang digunakan lebih dari panjang list, maka akan keluar error.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20nama_buah%20%3D%20%5B%22jeruk%22%2C%20%22semangka%22%2C%20%22apel%22%2C%20%22pisang%22%5D%0A%3E%3E%3E%20print(nama_buah%5B4%5D)%0ATraceback%20(most%20recent%20call%20last)%3A%0A%20%20File%20%22%3Cstdin%3E%22%2C%20line%201%2C%20in%20%3Cmodule%3E%0AIndexError%3A%20list%20index%20out%20of%20range\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; nama_buah = [\"jeruk\", \"semangka\", \"apel\", \"pisang\"]\n&gt;&gt;&gt; print(nama_buah[4])\nTraceback (most recent call last):\n  File \"&lt;stdin&gt;\", line 1, in &lt;module&gt;\nIndexError: list index out of range\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Mungkin kalian bertanya-tanya.\u003C/p>\n\u003Cp>\u003Cstrong>&quot;Kenapa indeks 4 kok error? Panjang list-nya kan 4, seharusnya keluar string &#39;pisang&#39; dong 🤔&quot;\u003C/strong>\u003C/p>\n\u003Cp>Ingat, indeks dalam list dimulai dari \u003Cstrong>0\u003C/strong> untuk mengakses item \u003Cstrong>pertama\u003C/strong>. Indeks \u003Cstrong>1\u003C/strong> digunakan untuk mengakses item \u003Cstrong>kedua\u003C/strong>.\u003C/p>\n\u003Cp>Sehingga jika kita menggunakan indeks \u003Cstrong>4\u003C/strong>, maka item yang diakses adalah item \u003Cstrong>kelima\u003C/strong>. Karena pada contoh tersebut hanya ada 4 item, maka item kelima tidak dapat diakses.\u003C/p>\n\u003Ch2 id=\"mengubah-nilai-item-dalam-list\">Mengubah Nilai Item dalam List\u003C/h2>\n\u003Cp>Item dalam list berlaku selayaknya variable pada umumnya. Kita dapat mengubah nilai dari item tersebut.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20daftar_angka%20%3D%20%5B1%2C%202%2C%203%2C%204%2C%205%5D%0A%3E%3E%3E%20print(daftar_angka)%0A%5B1%2C%202%2C%203%2C%204%2C%205%5D%0A%3E%3E%3E%20daftar_angka%5B0%5D%20%3D%2011%20%23%20mengubah%20nilai%20item%20dalam%20list%0A%3E%3E%3E%20daftar_angka%5B2%5D%20%3D%2033%0A%3E%3E%3E%20daftar_angka%5B4%5D%20%3D%2055%0A%3E%3E%3E%20print(daftar_angka)%0A%5B11%2C%202%2C%2033%2C%204%2C%2055%5D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; daftar_angka = [1, 2, 3, 4, 5]\n&gt;&gt;&gt; print(daftar_angka)\n[1, 2, 3, 4, 5]\n&gt;&gt;&gt; daftar_angka[0] = 11 # mengubah nilai item dalam list\n&gt;&gt;&gt; daftar_angka[2] = 33\n&gt;&gt;&gt; daftar_angka[4] = 55\n&gt;&gt;&gt; print(daftar_angka)\n[11, 2, 33, 4, 55]\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Pada contoh tersebut, kita mengubah nilai dari item ke 1, 3, dan 5 dari variable \u003Cstrong>daftar_angka\u003C/strong>. Bisa dilihat ya, nilai item telah berubah dari sebelumnya.\u003C/p>\n\u003Ch2 id=\"menambah-dan-mengurangi-item-dalam-list\">Menambah dan Mengurangi Item dalam List\u003C/h2>\n\u003Cp>Untuk menambah dan mengurangi item dalam sebuah list, kita dapat menggunakan method yang sudah tersedia pada python. Yaitu \u003Ccode>append\u003C/code> dan \u003Ccode>pop\u003C/code>.\u003C/p>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Method\u003C/strong> merupakan fungsi yang terdapat dalam sebuah objek. Pada python, list merupakan sebuah \u003Cstrong>objek\u003C/strong> sehingga memiliki beberapa method selain append dan pop.\u003C/p>\n\u003Cp>Untuk pembahasan lebih lanjut tentang \u003Cstrong>method\u003C/strong> dan \u003Cstrong>object\u003C/strong> akan kita bahas lebih pada bagian \u003Cstrong>OOP dengan Python\u003C/strong> di kesempatan selanjutnya.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Sekarang mari kita coba membuat \u003Cem>empty list\u003C/em>, dan mengisinya dengan method \u003Ccode>append\u003C/code>.\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20daftar_nama%20%3D%20%5B%5D%20%23%20membuat%20empty%20list%0A%3E%3E%3E%20print(daftar_nama)%0A%5B%5D%0A%3E%3E%3E%20daftar_nama.append(%22budi%22)%20%23%20menambahkan%20budi%20pada%20daftar_nama%0A%3E%3E%3E%20print(daftar_nama)%0A%5B'budi'%5D%0A%3E%3E%3E%20daftar_nama.append(%22inva%22)%20%23%20menambahkan%20inva%20pada%20daftar_nama%0A%3E%3E%3E%20print(daftar_nama)%0A%5B'budi'%2C%20'inva'%5D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; daftar_nama = [] # membuat empty list\n&gt;&gt;&gt; print(daftar_nama)\n[]\n&gt;&gt;&gt; daftar_nama.append(\"budi\") # menambahkan budi pada daftar_nama\n&gt;&gt;&gt; print(daftar_nama)\n['budi']\n&gt;&gt;&gt; daftar_nama.append(\"inva\") # menambahkan inva pada daftar_nama\n&gt;&gt;&gt; print(daftar_nama)\n['budi', 'inva']\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Dengan menggunakan method append, kita menambahkan item baru di akhir suatu list (indeks terakhir)\u003C/p>\n\u003Cp>Lalu, bagaimana cara menghapus item di dalam list?\u003C/p>\n\u003Cp>Untuk melakukan hal ini, kita dapat menggunakan method \u003Ccode>pop\u003C/code>\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20daftar_nama%20%3D%20%5B%22budi%22%2C%20%22inva%22%2C%20%22siko%22%2C%20%22adi%22%5D%0A%3E%3E%3E%20print(daftar_nama)%0A%5B'budi'%2C%20'inva'%2C%20'siko'%2C%20'adi'%5D%0A%3E%3E%3E%20daftar_nama.pop(2)%20%23%20menghapus%20item%20dengan%20indeks%202%0A%3E%3E%3E%20print(daftar_nama)%0A%5B'budi'%2C%20'inva'%2C%20'adi'%5D%0A%3E%3E%3E%20daftar_nama.pop()%20%23%20menghapus%20item%20terakhir%0A%3E%3E%3E%20print(daftar_nama)%0A%5B'budi'%2C%20'inva'%5D\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; daftar_nama = [\"budi\", \"inva\", \"siko\", \"adi\"]\n&gt;&gt;&gt; print(daftar_nama)\n['budi', 'inva', 'siko', 'adi']\n&gt;&gt;&gt; daftar_nama.pop(2) # menghapus item dengan indeks 2\n&gt;&gt;&gt; print(daftar_nama)\n['budi', 'inva', 'adi']\n&gt;&gt;&gt; daftar_nama.pop() # menghapus item terakhir\n&gt;&gt;&gt; print(daftar_nama)\n['budi', 'inva']\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Method pop ini menerima sebuah argumen berupa angka yang menunjukkan indeks mana yang akan dihapus.\u003C/p>\n\u003Cp>Jika indeks ini tidak diisikan, maka secara otomatis item terakhir (paling belakang) dari list yang akan dihapus.\u003C/p>\n\u003Cp>Dua method tersebut merupakan sedikit dari sekian banyak method yang bisa kita gunakan pada tipe data list. Selain itu masih ada \u003Ccode>clear\u003C/code>, \u003Ccode>copy\u003C/code>, \u003Ccode>remove\u003C/code>, \u003Ccode>insert\u003C/code>, \u003Ccode>extend\u003C/code>, dan lain sebagainya.\u003C/p>\n\u003Ch2 id=\"mencari-panjang-sebuah-list\">Mencari Panjang Sebuah List\u003C/h2>\n\u003Cp>Sama seperti saat kita mencari \u003Ca href=\"https://invasikode.com/tipe-data-string-python/#Mencari_Panjang_String\">panjang sebuah string\u003C/a>. Tipe data list juga dapat dicari panjangnya dengan menggunakan fungsi \u003Ccode>len()\u003C/code>\u003C/p>\n\n\u003Cdiv class=\"code-block-wrapper my-6 not-prose rounded-xl border-2 border-black dark:border-gray-600 shadow-neo overflow-hidden bg-[#24292e] text-[#e1e4e8] transition-all\">\n  \u003Cdiv class=\"code-block-header flex items-center justify-between px-4 py-2.5 bg-[#1f2428] border-b-2 border-black dark:border-gray-600 font-mono text-xs font-bold text-gray-300 select-none\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ff5f56] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black/40 inline-block\">\u003C/span>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C/span>\n    \u003C/div>\n    \u003Cbutton type=\"button\" class=\"copy-code-btn flex items-center gap-1.5 px-3 py-1 text-xs font-bold bg-[#2f363d] text-gray-200 border-2 border-black dark:border-gray-500 rounded-lg shadow-neo-sm hover:translate-x-0.5 hover:translate-y-0.5 hover:shadow-none hover:bg-gray-700 transition-all cursor-pointer\" data-code=\"%3E%3E%3E%20angka_genap%20%3D%20%5B2%2C%204%2C%206%2C%208%2C%2010%2C%2012%5D%0A%3E%3E%3E%20len(angka_genap)%20%23%20mendapatkan%20panjang%20list%20angka_genap%0A6\" title=\"Salin kode\">\n      \u003Csvg class=\"w-3.5 h-3.5 copy-icon-svg\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n        \u003Cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\">\u003C/path>\n      \u003C/svg>\n      \u003Cspan class=\"copy-text\">Copy\u003C/span>\n    \u003C/button>\n  \u003C/div>\n  \u003Cdiv class=\"code-block-content p-4 overflow-x-auto text-sm font-mono leading-relaxed bg-[#24292e]\">\n    \u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\">\u003Ccode>&gt;&gt;&gt; angka_genap = [2, 4, 6, 8, 10, 12]\n&gt;&gt;&gt; len(angka_genap) # mendapatkan panjang list angka_genap\n6\u003C/code>\u003C/pre>\n  \u003C/div>\n\u003C/div>\u003Cp>Bukan hanya itu saja. Fungsi yang satu ini sebenarnya dapat digunakan untuk mencari panjang semua tipe data yang mengandung banyak item. Seperti \u003Cstrong>tuple\u003C/strong> dan \u003Cstrong>dictionary\u003C/strong>.\u003C/p>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Tuple\u003C/strong> merupakan tipe data yang mirip dengan list, hanya saja itemnya tidak dapat diubah. Sedangkan \u003Cstrong>dictionary\u003C/strong> adalah sebuah list yang menerapkan prinsip \u003Cstrong>key and value\u003C/strong> untuk mengakses itemnya. Kita akan bahas lebih lanjut pada kesempatan lain.\u003C/p>\n\u003C/blockquote>\n\u003Ch2 id=\"penutup\">Penutup\u003C/h2>\n\u003Cp>Cukup sekian untuk kesempatan kali ini. Semoga bermanfaat.\u003C/p>\n\u003Cp>Siap-siap say good bye dengan terminal dan interpreter interaktif. Karena pada kesempatan selanjutnya kita akan mulai melakukan pemrograman python yang sebenarnya 😎.\u003C/p>\n\u003Cp>Pada kesempatan berikutnya kita akan mulai mencoba \u003Ca href=\"https://invasikode.com/menjalankan-script-python/\">menjalankan kode python dengan menuliskan script\u003C/a> pada file.\u003C/p>\n","",[143,156,171,183],{"id":144,"title":145,"slug":146,"excerpt":147,"thumbnail_image":148,"tags":150},"46","Mengapa C Mulai Ditinggalkan: Duel Filosofi Keamanan Rust vs Kesederhanaan Zig","mengapa-c-mulai-ditinggalkan-duel-filosofi-rust-vs-zig","Pernah denger kalau sekitar 70% celah keamanan kritis software modern itu asalnya dari bahasa C? Iya, bahasa yang udah jadi fondasi internet ini 😅. Yuk, kita bedah duel filosofi Rust vs Zig dan cari tahu mana yang pas buat proyek kalian!",{"id":149},"1942a5c9-c1f6-476d-9913-768f78d9d8eb",[151,152,153,154,155],"system-programming","rust","zig","c","memory-safety",{"id":157,"title":158,"slug":159,"excerpt":160,"thumbnail_image":161,"tags":163},"45","Rate Limiting Algorithms: Token Bucket vs Leaky Bucket vs Sliding Window","rate-limiting-algorithms-token-bucket-leaky-bucket-sliding-window","Udah tahu kenapa *rate limiting* itu wajib, tapi masih bingung beda Token Bucket, Leaky Bucket, Fixed Window, dan Sliding Window? Yuk, kita adu empat algoritma ini bareng-bareng dan cari tahu mana yang paling pas buat API kalian!",{"id":162},"0e0ed26d-20c6-443c-bde1-4a6200f6f801",[164,165,166,167,168,169,170],"backend","system-design","rate-limiting","redis","api-gateway","architecture","traffict-management",{"id":172,"title":173,"slug":174,"excerpt":175,"thumbnail_image":176,"tags":178},"44","Transactional Outbox Pattern: Solusi Konsistensi Database dan Message Broker Tanpa 2PC","transactional-outbox-pattern-konsistensi-database-message-broker","Pernah nggak kalian lihat pesanan udah masuk database, tapi email konfirmasinya nggak pernah kekirim? Itu gejala *dual-write problem*. Yuk, kita bedah Transactional Outbox Pattern biar data dan *event* kalian nggak lagi berselisih paham!",{"id":177},"e3c617fd-1486-4b82-b937-94fbec846c77",[164,179,169,180,181,165,182],"microservices","database","message-broker","postgresql",{"id":184,"title":185,"slug":186,"excerpt":187,"thumbnail_image":188,"tags":190},"43","Dead Letter Queue (DLQ) & Retry Policy: Menyelamatkan Pesan Nyasar di RabbitMQ Tanpa Bikin Worker Macet","dead-letter-queue-retry-policy-rabbitmq-resilient-messaging","Pernah nggak sih, *worker* kalian nolak satu pesan terus-terusan sampai CPU melonjak 100%? Itu namanya *poison message loop*, jebakan klasik di RabbitMQ. Yuk, kita bahas cara pasang *retry policy* dan *dead letter queue* yang bener!",{"id":189},"6c0a7ead-4841-4073-b29e-df7ae0f2aa3c",[191,181,164,169,179,192,51],"rabbitmq","async",[194,198,201,204,207,210],{"text":195,"depth":196,"id":197},"Tentang Tipe Data List",2,"tentang-tipe-data-list",{"text":199,"depth":196,"id":200},"Mengakses Item dalam List","mengakses-item-dalam-list",{"text":202,"depth":196,"id":203},"Mengubah Nilai Item dalam List","mengubah-nilai-item-dalam-list",{"text":205,"depth":196,"id":206},"Menambah dan Mengurangi Item dalam List","menambah-dan-mengurangi-item-dalam-list",{"text":208,"depth":196,"id":209},"Mencari Panjang Sebuah List","mencari-panjang-sebuah-list",{"text":211,"depth":196,"id":212},"Penutup","penutup",1791045069962]