[{"data":1,"prerenderedAt":341},["ShallowReactive",2],{"tag-labels":3,"site-header":4,"article-list-comprehension-pada-pyhton-id":72},{},{"featuredPost":5,"navigations":29},{"id":6,"title":7,"title_en":8,"slug":9,"excerpt":10,"excerpt_en":11,"has_translation":12,"published_at":13,"reading_time":14,"hidden_from_listing":15,"tags":16,"thumbnail_image":21,"og_image":22,"series":23,"authors":28},110,"Ketika Pilih Framework Cuma Biar Kelihatan Beda","When You Pick a Framework Just to Look Different","ketika-pilih-framework-cuma-biar-kelihatan-beda","Terakhir kali kamu milih framework atau library baru, itu karena masalahmu butuh alat itu, atau karena alatnya kedengaran keren dan belum banyak yang pakai? Pertanyaan ini nggak enak dijawab. Soalnya keputusan teknologi sering diambil dengan alasan yang nggak pernah ditulis di dokumen teknis mana pun.","The last time you chose a new framework or library, was it because your problem needed that tool, or because it sounded cool and few people around you were using it? That question is uncomfortable. Technology decisions are often made for reasons that never appear in any technical document.",true,"2026-10-06T15:25:21.000Z",5,false,[17,18,19,20],"karier","framework","opini","pengalaman",null,"\u002Fog\u002Fketika-pilih-framework-cuma-biar-kelihatan-beda.png",{"id":24,"title":25,"title_en":26,"slug":27},9,"Artikel","Articles","all",[],[30,46,67],{"collection":31,"item":32},"series",{"__typename":31,"title":25,"title_en":26,"slug":27,"children_series":33},[34,38,42],{"title":35,"title_en":36,"slug":37},"Kecerdasan Artifisial","Artificial Intelligence","kecerdasan-artifisial",{"title":39,"title_en":40,"slug":41},"Konsep Dasar Pemrograman","Programming Fundamentals","konsep-dasar-pemrograman",{"title":43,"title_en":44,"slug":45},"Algoritma dan Struktur Data","Algorithms and Data Structures","algoritma-struktur-data",{"collection":31,"item":47},{"__typename":31,"title":48,"title_en":48,"slug":49,"children_series":50},"Tutorial","tutorial",[51,55,59,63],{"title":52,"title_en":53,"slug":54},"Belajar Python","Learning Python","belajar-python",{"title":56,"title_en":57,"slug":58},"Belajar Golang","Learning Go","belajar-golang",{"title":60,"title_en":61,"slug":62},"Belajar Java","Learning Java","belajar-java",{"title":64,"title_en":65,"slug":66},"Belajar Pascal","Learning Pascal","belajar-pascal",{"collection":31,"item":68},{"__typename":31,"title":69,"title_en":69,"slug":70,"children_series":71},"Lab","lab",[],{"article":73,"renderedBody":218,"renderedTakeaway":219,"latestArticles":220,"toc":315},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":86,"authors":211,"body_locale":214,"available_locales":215,"body":217,"takeway":21,"prerequisite":21},97,"List Comprehension Pada Pyhton","List Comprehension in Python","list-comprehension-pada-pyhton","list comprehension merupakan ternary operator pada Python untuk mempersingkat proses inisialisasi variable list","List comprehension is the ternary operator in Python that shortens the process of initializing a list variable.","2021-11-27T03:17:02.000Z",[82,83,84],"python","list","list-comprehension","\u002Fog\u002Flist-comprehension-pada-pyhton.png",{"id":87,"title":88,"title_en":89,"slug":90,"description":91,"description_en":92,"articles":93,"children_series":180,"parent_series":181},19,"Struktur Kontrol","Control Structures","python-struktur-kontrol","Bikin program yang bisa ngambil keputusan dan ngulang pekerjaan — percabangan, perulangan, sampai list comprehension.","Make a program decide things and repeat work: branching, loops, and list comprehension.",[94,115,131,146,160,175],{"id":95,"title":96,"title_en":97,"slug":98,"excerpt":99,"excerpt_en":100,"has_translation":12,"published_at":101,"reading_time":102,"hidden_from_listing":15,"tags":103,"thumbnail_image":21,"og_image":106,"series":107,"authors":108},92,"Percabangan dengan IF, ELIF, ELSE pada Python","Branching with IF, ELIF, ELSE in Python","percabangan-dengan-if-elif-else-pada-python","Conditional statement bertugas untuk menjalankan perintah sesuai kondisi. Pada python, hal ini ditangani oleh if statement.","A conditional statement runs a command only when its condition holds. In Python, the if statement handles that job.","2021-05-28T03:36:19.000Z",3,[82,104,105],"percabangan","struktur-kontrol","\u002Fog\u002Fpercabangan-dengan-if-elif-else-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[109],{"authors_id":110},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},1,"Daffa Izzuddin","izzudd","Writer",{"id":116,"title":117,"title_en":118,"slug":119,"excerpt":120,"excerpt_en":121,"has_translation":12,"published_at":122,"reading_time":14,"hidden_from_listing":15,"tags":123,"thumbnail_image":21,"og_image":126,"series":127,"authors":128},93,"Perulangan dengan FOR Loop pada Python","Repetition with the FOR Loop in Python","perulangan-dengan-for-loop-pada-python","for loop merupakan perulangan yang sudah diketahui kapan mulainya dan kapan selesainya.","A for loop is a loop where you already know when it starts and when it ends.","2021-07-10T03:46:32.000Z",[82,124,125,105],"perulangan","loop","\u002Fog\u002Fperulangan-dengan-for-loop-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[129],{"authors_id":130},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":132,"title":133,"title_en":134,"slug":135,"excerpt":136,"excerpt_en":137,"has_translation":12,"published_at":138,"reading_time":139,"hidden_from_listing":15,"tags":140,"thumbnail_image":21,"og_image":141,"series":142,"authors":143},94,"Perulangan dengan WHILE Loop pada Python","Repetition with the WHILE Loop in Python","perulangan-dengan-while-loop-pada-python","Berbeda dengan perulangan for, dengan while kita akan menggunakan kondisi boolean sebagai pengendalinya.","Unlike the for loop, a while loop uses a boolean condition as its controller.","2021-07-21T03:52:03.000Z",4,[82,124,125,105],"\u002Fog\u002Fperulangan-dengan-while-loop-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[144],{"authors_id":145},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":147,"title":148,"title_en":149,"slug":150,"excerpt":151,"excerpt_en":152,"has_translation":12,"published_at":153,"reading_time":102,"hidden_from_listing":15,"tags":154,"thumbnail_image":21,"og_image":155,"series":156,"authors":157},95,"Statement BREAK dan CONTINUE pada Python","The BREAK and CONTINUE Statements in Python","statement-break-dan-continue-pada-python","Python memiliki statement break dan continue untuk mengatasi kasus-kasus khusus pada struktur kontrol.","Python has the break and continue statements to handle special cases in control structures.","2021-10-28T03:59:18.000Z",[82,124,125,105],"\u002Fog\u002Fstatement-break-dan-continue-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[158],{"authors_id":159},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":161,"title":162,"title_en":163,"slug":164,"excerpt":165,"excerpt_en":166,"has_translation":12,"published_at":167,"reading_time":102,"hidden_from_listing":15,"tags":168,"thumbnail_image":21,"og_image":170,"series":171,"authors":172},96,"Percabangan dengan Ternary Operator pada Python","Branching with the Ternary Operator in Python","percobangan-dengan-ternary-operator-pada-python","Pada Python ternary operator untuk mempersingkat assignment yang melibatkan kondisi IF ELSE.","In Python the ternary operator shortens an assignment that involves an IF ELSE condition.","2021-11-21T04:07:50.000Z",[82,104,169,105],"operator","\u002Fog\u002Fpercobangan-dengan-ternary-operator-pada-python.png",{"id":87,"title":88,"title_en":89,"slug":90},[173],{"authors_id":174},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":74,"title":75,"title_en":76,"slug":77,"excerpt":78,"excerpt_en":79,"has_translation":12,"published_at":80,"reading_time":14,"hidden_from_listing":15,"tags":81,"thumbnail_image":21,"og_image":85,"series":176,"authors":177},{"id":87,"title":88,"title_en":89,"slug":90},[178],{"authors_id":179},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},[],{"id":182,"title":52,"title_en":53,"slug":54,"parent_series":183,"children_series":184},10,{"id":111,"title":48,"title_en":48,"slug":49},[185,190,195,200,201,206],{"id":186,"title":187,"title_en":188,"slug":189,"cover_image":21},16,"Berkenalan dengan Bahasa Python","Getting Started with Python","python-intro",{"id":191,"title":192,"title_en":193,"slug":194,"cover_image":21},17,"Variabel, Tipe Data, dan Operasi","Variables, Types, and Operations","python-variabel-tipe-data",{"id":196,"title":197,"title_en":198,"slug":199,"cover_image":21},18,"Menggunakan Script Python","Working with Python Scripts","python-pemrograman-dengan-script",{"id":87,"title":88,"title_en":89,"slug":90,"cover_image":21},{"id":202,"title":203,"title_en":204,"slug":205,"cover_image":21},20,"Pemrograman Fungsional dengan Python","Functional Programming with Python","python-pemrograman-fungsional",{"id":207,"title":208,"title_en":209,"slug":210,"cover_image":21},30,"Koleksi dan String","Collections and Strings","python-collections",[212],{"authors_id":213},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},"id",[216,214],"en","Pada kesempatan kali ini kita akan membahas tentang list comprehension pada Python. Kalau [ternary conditional operator](https:\u002F\u002Finvasikode.com\u002Fternary-operator-python\u002F) digunakan untuk mempersingkat assignment dengan pemilihan `if-else`, list comprehension ini digunakan untuk mempersingkat assignment data list dengan [perulangan](https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F) `for`.\n\nMari kita bahas lebih lanjut...\n\nBagaimana penggunaan dan cara kerjanya? Mari kita bahas lebih lanjut…\n\n## List Comprehension pada Python\n\nSeperti yang sudah disebutkan sebelumnya, list comprehension merupakan ternary operator pada Python yang berfungsi untuk mempersingkat proses inisialisasi [variable list](https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F).\n\nKadang ada beberapa kasus yang mengharuskan kita mengisi elemen dari list sebelum melakukan manipulasi data. Tentu saja hal ini dapat dilakukan menggunakan perulangan `for` dengan append list pada setiap iterasinya. Contohnya seperti ini:\n\n```python\nlist = []\nfor i in range(10):\n    list.append(i)\n\nprint(list)\n```\n\nOutput:\n\n```\n[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n```\n\nCara tersebut secara logika memang tidak salah, tapi… sebenarnya Python sudah punya metode yang lebih singkat dan tentunya lebih manusiawi ketimbang melakukan cara di atas. Disinilah list comprehension bersinar 😎\n\nKalau kalian pernah belajar tentang notasi himpunan matematika mungkin list comprehension ini sudah tidak asing lagi. Ingat cara baca ini?\n\n$$\nlist = {x | 0 \\le x \\lt 10, x \\in \\Z }\n$$\n\n> Notasi tersebut dibaca: *`list` merupakan himpunan bilangan `x`, sedemikian hingga `x` adalah bilangan bulat lebih dari atau sama dengan 0 dan kurang dari 10.*\n\nNotasi tersebut sebenarnya persis seperti kode yang telah kita buat sebelumnya. Yaitu memasukkan himpunan bilangan bulat antara 1 sampai 10 ke varaible list.\n\nNah loh, dari pada bingung sekarang kita balik lagi ke dunia python.\n\n## Format Penulisan List Comprehension\n\nKarena list comprehension juga ternary operator, maka dibutuhkan 3 operand dan 2 operator.\n\n```\n\u003Cvariable-target> = [\u003Ckembalian> for \u003Citem> in \u003Citerable>]\n```\n\n* `variable-target`: variable untuk menampung list yang telah dibuat\n* `kembalian`: nilai yang akan dikembalikan sebagai elemen list. Dapat berupa nilai [tetap](#membuat-list-berisi-nilai-yang-sama-konstan), variable, maupun [ekspresi](#membuat-list-angka-kuadrat) untuk memproses nilai `item`\n* `item`: penampung nilai dari iterable pada tiap iterasi, nilai ini dapat digunakan sebagai ekspresi dalam kembalian\n* `iterable`: variable yang berisi kumpulan nilai (list, string, tuple, dll)\n\nAtau bisa juga ditambah dengan kondisi:\n\n```\n\u003Cvariable-target> = [\u003Ckembalian> for \u003Citem> in \u003Citerable> if \u003Ckondisi>]\n```\n\nJika terdapat if statement seperti format di atas maka nilai `item` hanya akan diproses ketika `kondisi` bernilai **True**\n\n## Menggunakan List Comprehension\n\nPertama kita akan coba mengubah kode yang sebelumnya agar menggunakan list comprehension. Dengan logika yang sama kode tesebut dapat diubah menjadi seperti ini:\n\n```python\nlist = [i for i in range(10)]\nprint(list)\n```\n\nOutput:\n\n```\n[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n```\n\nNah loh.. kode yang sebelumnya terdiri dari 4 baris sekarang jadi tinggal 2 baris. Dengan menggunakan list comprehension ini, inisialisasi dan pengisian variable list dapat dilakukan sekaligus tanpa perlu menggunakan `for` loop dan `append`.\n\n**Apa yang sebenarnya terjadi?**\n\nAgar lebih mudah memahami cara kerjanya, kita coba bahas proses inisialisasi variable `list` mulai dari kulit paling dalam hingga terluar.\n\n1. `for i in range(10)`: perulangan `for` biasa yang artinya kita mengambil setiap elemen dari iterable (`range(10)`) dan memasukkannya ke dalam variable `i`\n2. `[i for i in range(10)]`: nilai yang ada di dalam variable `i` menjadi ekspresi kembalian elemen list. Nantinya proses pengembalian akan dijalankan sebanyak panjang iterable sehingga didapatkan sebuah list\n3. `list = [i for i in range(10)]`: hasil dari list comprehension dimasukkan ke dalam variable `list`\n\nSekarang kita coba ke contoh lainnya.\n\n### Membuat list angka kuadrat\n\nPada kasus ini kita akan membuat variable `list` berisi 10 bilangan kuadrat yang pertama (mulai dari 0). Untuk melakukannya kita cukup mengubah ekspresi kembaliannya saja hingga menjadi seperti ini:\n\n```\nlist = [i*i for i in range(10)]\nprint(list)\n```\n\nOutput:\n\n```\n[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n```\n\nNah… terlihat ya bagian mana yang perlu diubah. Dari yang sebelumnya kita cukup mengembalikan nilai `i`, sekarang kita mengembalikan nilai `i*i` sehingga didapatkan list bilangan pangkat 2.\n\n> Ingat! nilai kembalian pada list comprehension ini merupakan **ekspresi**. Jadi pemrosesan data apapun dapat dilakukan disana (termasuk pemanggilan fungsi dan ternary conditional operator).\n\n### Menggunakan kondisi\n\nSekarang kita tambah lagi kasusnya. Bagaimana cara membuat list yang berisi bilangan kuadrat dari angka genap saja. Sehingga hasil akhirnya adalah 4, 16, 36, dst.\n\nNah untuk melakukan ini kita dapat menggunakan [blok `if`](https:\u002F\u002Finvasikode.com\u002Fif-else-python\u002F) seperti pada format ke-2. Nantinya akan dicek apakah nilai `i` genap atau tidak. Sehingga kodenya berubah menjadi seperti ini:\n\n```python\nlist = [i*i for i in range(10) if i % 2 == 0]\nprint(list)\n```\n\nOutput:\n\n```\n[0, 4, 16, 36, 64]\n```\n\nNah pada contoh tersebut list yang dihasilkan memiliki panjang 5, tidak seperti sebelumnya yang memiliki panjang 10. Hal ini disebabkan karena ekspresi kembalian hanya akan proses **jika kondisi bernilai True**. Jadi ketika `i` bernilai ganjil nilainya tidak akan dikembalikan.\n\n### Membuat list berisi nilai yang sama (konstan)\n\nList comprehension ini juga dapat digunakan untuk menginisialisasi list dengan nilai yang sama pada setiap elemennya. Misal pada suatu kasus kita ingin membuat list dengan 10 elemen yang berisi nama orang yang sama. Maka hal ini dapat diselesaikan dengan kode berikut:\n\n```python\nnames = [\"inva\" for x in range(10)]\nprint(names)\n```\n\nOutput:\n\n```\n['inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva']\n```\n\nPada contoh tersebut variable `x` tidak digunakan sama sekali dalam ekspresi kembalian. Variable `x` di sini hanya berfungsi sebagai pembantu untuk melakukan iterasi.\n\n### Mengubah kalimat menjadi list karakter\n\nContoh terakhir. Ingat kan bahwa [string](https:\u002F\u002Finvasikode.com\u002Ftipe-data-string-python\u002F) pada python juga termasuk iterable? Karena termasuk iterable, string bisa juga dimanfaatkan untuk melakukan list comprehension.\n\nMisal pada kasus ini kita diminta untuk mengambil semua karakter dari sebuah string, dan memasukkannya ke dalam list `chars`. Maka kodenya akan seperti ini:\n\n```python\nsentence = \"belajar python bareng inva\"\nchars = [char for char in sentence]\nprint(chars)\n```\n\nOutput:\n\n```\n['b', 'e', 'l', 'a', 'j', 'a', 'r', ' ', 'p', 'y', 't', 'h', 'o', 'n', ' ', 'b', 'a', 'r', 'e', 'n', 'g', ' ', 'i', 'n', 'v', 'a']\n```\n\n> Sebenarnya untuk mengubah string menjadi list dapat digunakan type casting. contoh: `list(sentence)`\n\n## Penutup\n\nCukup sekian untuk kesempatan kali ini, semoga bermanfaat 😃\n\nPada kesempatan selanjutnya kita akan mulai bermain dengan fungsi dan sub program pada Python 3.\n\nSee ya…👋\n","\u003Cp>Pada kesempatan kali ini kita akan membahas tentang list comprehension pada Python. Kalau \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fternary-operator-python\u002F\">ternary conditional operator\u003C\u002Fa> digunakan untuk mempersingkat assignment dengan pemilihan \u003Ccode>if-else\u003C\u002Fcode>, list comprehension ini digunakan untuk mempersingkat assignment data list dengan \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ffor-loop-python\u002F\">perulangan\u003C\u002Fa> \u003Ccode>for\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Mari kita bahas lebih lanjut...\u003C\u002Fp>\n\u003Cp>Bagaimana penggunaan dan cara kerjanya? Mari kita bahas lebih lanjut…\u003C\u002Fp>\n\u003Ch2 id=\"list-comprehension-pada-python\">List Comprehension pada Python\u003C\u002Fh2>\n\u003Cp>Seperti yang sudah disebutkan sebelumnya, list comprehension merupakan ternary operator pada Python yang berfungsi untuk mempersingkat proses inisialisasi \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ftipe-data-list-python\u002F\">variable list\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Kadang ada beberapa kasus yang mengharuskan kita mengisi elemen dari list sebelum melakukan manipulasi data. Tentu saja hal ini dapat dilakukan menggunakan perulangan \u003Ccode>for\u003C\u002Fcode> dengan append list pada setiap iterasinya. Contohnya seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"list%20%3D%20%5B%5D%0Afor%20i%20in%20range(10)%3A%0A%20%20%20%20list.append(i)%0A%0Aprint(list)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> []\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> range\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    list\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">.append(i)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B0%2C%201%2C%202%2C%203%2C%204%2C%205%2C%206%2C%207%2C%208%2C%209%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Cara tersebut secara logika memang tidak salah, tapi… sebenarnya Python sudah punya metode yang lebih singkat dan tentunya lebih manusiawi ketimbang melakukan cara di atas. Disinilah list comprehension bersinar 😎\u003C\u002Fp>\n\u003Cp>Kalau kalian pernah belajar tentang notasi himpunan matematika mungkin list comprehension ini sudah tidak asing lagi. Ingat cara baca ini?\u003C\u002Fp>\n\u003Cspan class=\"katex-display\">\u003Cspan class=\"katex\">\u003Cspan class=\"katex-mathml\">\u003Cmath xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML\" display=\"block\">\u003Csemantics>\u003Cmrow>\u003Cmi>l\u003C\u002Fmi>\u003Cmi>i\u003C\u002Fmi>\u003Cmi>s\u003C\u002Fmi>\u003Cmi>t\u003C\u002Fmi>\u003Cmo>=\u003C\u002Fmo>\u003Cmrow>\u003Cmi>x\u003C\u002Fmi>\u003Cmi mathvariant=\"normal\">∣\u003C\u002Fmi>\u003Cmn>0\u003C\u002Fmn>\u003Cmo>≤\u003C\u002Fmo>\u003Cmi>x\u003C\u002Fmi>\u003Cmo>&lt;\u003C\u002Fmo>\u003Cmn>10\u003C\u002Fmn>\u003Cmo separator=\"true\">,\u003C\u002Fmo>\u003Cmi>x\u003C\u002Fmi>\u003Cmo>∈\u003C\u002Fmo>\u003Cmi mathvariant=\"double-struck\">Z\u003C\u002Fmi>\u003C\u002Fmrow>\u003C\u002Fmrow>\u003Cannotation encoding=\"application\u002Fx-tex\">list = {x | 0 \\le x \\lt 10, x \\in \\Z }\u003C\u002Fannotation>\u003C\u002Fsemantics>\u003C\u002Fmath>\u003C\u002Fspan>\u003Cspan class=\"katex-html\" aria-hidden=\"true\">\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:0.6944em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\" style=\"margin-right:0.0197em;\">l\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">i\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">s\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">t\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">=\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"katex-base\">\u003Cspan class=\"katex-strut\" style=\"height:1em;vertical-align:-0.25em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"mord\">∣0\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">≤\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">&lt;\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mord\">10\u003C\u002Fspan>\u003Cspan class=\"mpunct\">,\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.1667em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathnormal\">x\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mrel\">∈\u003C\u002Fspan>\u003Cspan class=\"mspace\" style=\"margin-right:0.2778em;\">\u003C\u002Fspan>\u003Cspan class=\"mord mathbb\">Z\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cblockquote>\n\u003Cp>Notasi tersebut dibaca: \u003Cem>\u003Ccode>list\u003C\u002Fcode> merupakan himpunan bilangan \u003Ccode>x\u003C\u002Fcode>, sedemikian hingga \u003Ccode>x\u003C\u002Fcode> adalah bilangan bulat lebih dari atau sama dengan 0 dan kurang dari 10.\u003C\u002Fem>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Notasi tersebut sebenarnya persis seperti kode yang telah kita buat sebelumnya. Yaitu memasukkan himpunan bilangan bulat antara 1 sampai 10 ke varaible list.\u003C\u002Fp>\n\u003Cp>Nah loh, dari pada bingung sekarang kita balik lagi ke dunia python.\u003C\u002Fp>\n\u003Ch2 id=\"format-penulisan-list-comprehension\">Format Penulisan List Comprehension\u003C\u002Fh2>\n\u003Cp>Karena list comprehension juga ternary operator, maka dibutuhkan 3 operand dan 2 operator.\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%3Cvariable-target%3E%20%3D%20%5B%3Ckembalian%3E%20for%20%3Citem%3E%20in%20%3Citerable%3E%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>&lt;variable-target&gt; = [&lt;kembalian&gt; for &lt;item&gt; in &lt;iterable&gt;]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cul>\n\u003Cli>\u003Ccode>variable-target\u003C\u002Fcode>: variable untuk menampung list yang telah dibuat\u003C\u002Fli>\n\u003Cli>\u003Ccode>kembalian\u003C\u002Fcode>: nilai yang akan dikembalikan sebagai elemen list. Dapat berupa nilai \u003Ca href=\"#membuat-list-berisi-nilai-yang-sama-konstan\">tetap\u003C\u002Fa>, variable, maupun \u003Ca href=\"#membuat-list-angka-kuadrat\">ekspresi\u003C\u002Fa> untuk memproses nilai \u003Ccode>item\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>item\u003C\u002Fcode>: penampung nilai dari iterable pada tiap iterasi, nilai ini dapat digunakan sebagai ekspresi dalam kembalian\u003C\u002Fli>\n\u003Cli>\u003Ccode>iterable\u003C\u002Fcode>: variable yang berisi kumpulan nilai (list, string, tuple, dll)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Atau bisa juga ditambah dengan kondisi:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%3Cvariable-target%3E%20%3D%20%5B%3Ckembalian%3E%20for%20%3Citem%3E%20in%20%3Citerable%3E%20if%20%3Ckondisi%3E%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>&lt;variable-target&gt; = [&lt;kembalian&gt; for &lt;item&gt; in &lt;iterable&gt; if &lt;kondisi&gt;]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Jika terdapat if statement seperti format di atas maka nilai \u003Ccode>item\u003C\u002Fcode> hanya akan diproses ketika \u003Ccode>kondisi\u003C\u002Fcode> bernilai \u003Cstrong>True\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch2 id=\"menggunakan-list-comprehension\">Menggunakan List Comprehension\u003C\u002Fh2>\n\u003Cp>Pertama kita akan coba mengubah kode yang sebelumnya agar menggunakan list comprehension. Dengan logika yang sama kode tesebut dapat diubah menjadi seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"list%20%3D%20%5Bi%20for%20i%20in%20range(10)%5D%0Aprint(list)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> [i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> range\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B0%2C%201%2C%202%2C%203%2C%204%2C%205%2C%206%2C%207%2C%208%2C%209%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Nah loh.. kode yang sebelumnya terdiri dari 4 baris sekarang jadi tinggal 2 baris. Dengan menggunakan list comprehension ini, inisialisasi dan pengisian variable list dapat dilakukan sekaligus tanpa perlu menggunakan \u003Ccode>for\u003C\u002Fcode> loop dan \u003Ccode>append\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Apa yang sebenarnya terjadi?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Agar lebih mudah memahami cara kerjanya, kita coba bahas proses inisialisasi variable \u003Ccode>list\u003C\u002Fcode> mulai dari kulit paling dalam hingga terluar.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>for i in range(10)\u003C\u002Fcode>: perulangan \u003Ccode>for\u003C\u002Fcode> biasa yang artinya kita mengambil setiap elemen dari iterable (\u003Ccode>range(10)\u003C\u002Fcode>) dan memasukkannya ke dalam variable \u003Ccode>i\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>[i for i in range(10)]\u003C\u002Fcode>: nilai yang ada di dalam variable \u003Ccode>i\u003C\u002Fcode> menjadi ekspresi kembalian elemen list. Nantinya proses pengembalian akan dijalankan sebanyak panjang iterable sehingga didapatkan sebuah list\u003C\u002Fli>\n\u003Cli>\u003Ccode>list = [i for i in range(10)]\u003C\u002Fcode>: hasil dari list comprehension dimasukkan ke dalam variable \u003Ccode>list\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Sekarang kita coba ke contoh lainnya.\u003C\u002Fp>\n\u003Ch3 id=\"membuat-list-angka-kuadrat\">Membuat list angka kuadrat\u003C\u002Fh3>\n\u003Cp>Pada kasus ini kita akan membuat variable \u003Ccode>list\u003C\u002Fcode> berisi 10 bilangan kuadrat yang pertama (mulai dari 0). Untuk melakukannya kita cukup mengubah ekspresi kembaliannya saja hingga menjadi seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"list%20%3D%20%5Bi*i%20for%20i%20in%20range(10)%5D%0Aprint(list)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>list = [i*i for i in range(10)]\nprint(list)\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B0%2C%201%2C%204%2C%209%2C%2016%2C%2025%2C%2036%2C%2049%2C%2064%2C%2081%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Nah… terlihat ya bagian mana yang perlu diubah. Dari yang sebelumnya kita cukup mengembalikan nilai \u003Ccode>i\u003C\u002Fcode>, sekarang kita mengembalikan nilai \u003Ccode>i*i\u003C\u002Fcode> sehingga didapatkan list bilangan pangkat 2.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Ingat! nilai kembalian pada list comprehension ini merupakan \u003Cstrong>ekspresi\u003C\u002Fstrong>. Jadi pemrosesan data apapun dapat dilakukan disana (termasuk pemanggilan fungsi dan ternary conditional operator).\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3 id=\"menggunakan-kondisi\">Menggunakan kondisi\u003C\u002Fh3>\n\u003Cp>Sekarang kita tambah lagi kasusnya. Bagaimana cara membuat list yang berisi bilangan kuadrat dari angka genap saja. Sehingga hasil akhirnya adalah 4, 16, 36, dst.\u003C\u002Fp>\n\u003Cp>Nah untuk melakukan ini kita dapat menggunakan \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Fif-else-python\u002F\">blok \u003Ccode>if\u003C\u002Fcode>\u003C\u002Fa> seperti pada format ke-2. Nantinya akan dicek apakah nilai \u003Ccode>i\u003C\u002Fcode> genap atau tidak. Sehingga kodenya berubah menjadi seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"list%20%3D%20%5Bi*i%20for%20i%20in%20range(10)%20if%20i%20%25%202%20%3D%3D%200%5D%0Aprint(list)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> =\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> [i\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">*\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> range\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">) \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">if\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> i \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">%\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 2\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> ==\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> 0\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">list\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B0%2C%204%2C%2016%2C%2036%2C%2064%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>[0, 4, 16, 36, 64]\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Nah pada contoh tersebut list yang dihasilkan memiliki panjang 5, tidak seperti sebelumnya yang memiliki panjang 10. Hal ini disebabkan karena ekspresi kembalian hanya akan proses \u003Cstrong>jika kondisi bernilai True\u003C\u002Fstrong>. Jadi ketika \u003Ccode>i\u003C\u002Fcode> bernilai ganjil nilainya tidak akan dikembalikan.\u003C\u002Fp>\n\u003Ch3 id=\"membuat-list-berisi-nilai-yang-sama-konstan\">Membuat list berisi nilai yang sama (konstan)\u003C\u002Fh3>\n\u003Cp>List comprehension ini juga dapat digunakan untuk menginisialisasi list dengan nilai yang sama pada setiap elemennya. Misal pada suatu kasus kita ingin membuat list dengan 10 elemen yang berisi nama orang yang sama. Maka hal ini dapat diselesaikan dengan kode berikut:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"names%20%3D%20%5B%22inva%22%20for%20x%20in%20range(10)%5D%0Aprint(names)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">names \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\">\"inva\"\u003C\u002Fspan>\u003Cspan style=\"color:#F97583\"> for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> x \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\"> range\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79B8FF\">10\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">)]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(names)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%2C%20'inva'%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>['inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva', 'inva']\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Pada contoh tersebut variable \u003Ccode>x\u003C\u002Fcode> tidak digunakan sama sekali dalam ekspresi kembalian. Variable \u003Ccode>x\u003C\u002Fcode> di sini hanya berfungsi sebagai pembantu untuk melakukan iterasi.\u003C\u002Fp>\n\u003Ch3 id=\"mengubah-kalimat-menjadi-list-karakter\">Mengubah kalimat menjadi list karakter\u003C\u002Fh3>\n\u003Cp>Contoh terakhir. Ingat kan bahwa \u003Ca href=\"https:\u002F\u002Finvasikode.com\u002Ftipe-data-string-python\u002F\">string\u003C\u002Fa> pada python juga termasuk iterable? Karena termasuk iterable, string bisa juga dimanfaatkan untuk melakukan list comprehension.\u003C\u002Fp>\n\u003Cp>Misal pada kasus ini kita diminta untuk mengambil semua karakter dari sebuah string, dan memasukkannya ke dalam list \u003Ccode>chars\u003C\u002Fcode>. Maka kodenya akan seperti ini:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">PYTHON\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"sentence%20%3D%20%22belajar%20python%20bareng%20inva%22%0Achars%20%3D%20%5Bchar%20for%20char%20in%20sentence%5D%0Aprint(chars)\" 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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">sentence \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#9ECBFF\"> \"belajar python bareng inva\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">chars \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> [char \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">for\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> char \u003C\u002Fspan>\u003Cspan style=\"color:#F97583\">in\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\"> sentence]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E1E4E8\">(chars)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cp>Output:\u003C\u002Fp>\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\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#ffbd2e] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"w-3 h-3 rounded-full bg-[#27c93f] border border-black\u002F40 inline-block\">\u003C\u002Fspan>\n      \u003Cspan class=\"ml-2 font-mono font-bold text-xs uppercase tracking-wider text-gray-300\">TEXT\u003C\u002Fspan>\n    \u003C\u002Fdiv>\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=\"%5B'b'%2C%20'e'%2C%20'l'%2C%20'a'%2C%20'j'%2C%20'a'%2C%20'r'%2C%20'%20'%2C%20'p'%2C%20'y'%2C%20't'%2C%20'h'%2C%20'o'%2C%20'n'%2C%20'%20'%2C%20'b'%2C%20'a'%2C%20'r'%2C%20'e'%2C%20'n'%2C%20'g'%2C%20'%20'%2C%20'i'%2C%20'n'%2C%20'v'%2C%20'a'%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\u002Fpath>\n      \u003C\u002Fsvg>\n      \u003Cspan class=\"copy-text\">Copy\u003C\u002Fspan>\n    \u003C\u002Fbutton>\n  \u003C\u002Fdiv>\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>['b', 'e', 'l', 'a', 'j', 'a', 'r', ' ', 'p', 'y', 't', 'h', 'o', 'n', ' ', 'b', 'a', 'r', 'e', 'n', 'g', ' ', 'i', 'n', 'v', 'a']\u003C\u002Fcode>\u003C\u002Fpre>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\u003Cblockquote>\n\u003Cp>Sebenarnya untuk mengubah string menjadi list dapat digunakan type casting. contoh: \u003Ccode>list(sentence)\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"penutup\">Penutup\u003C\u002Fh2>\n\u003Cp>Cukup sekian untuk kesempatan kali ini, semoga bermanfaat 😃\u003C\u002Fp>\n\u003Cp>Pada kesempatan selanjutnya kita akan mulai bermain dengan fungsi dan sub program pada Python 3.\u003C\u002Fp>\n\u003Cp>See ya…👋\u003C\u002Fp>\n","",[221,235,248,261,274,295],{"id":222,"title":223,"title_en":21,"slug":224,"excerpt":225,"excerpt_en":21,"has_translation":15,"published_at":226,"reading_time":227,"hidden_from_listing":15,"tags":228,"thumbnail_image":21,"og_image":230,"series":231,"authors":232},133,"Python Strings: the Badge That Only Worked for One Name","python-strings","The badge script printed the right name for the person who wrote it and the wrong name for everybody else. Slicing counts characters, and a name is words.","2026-10-28T13:00:00.000Z",6,[82,229],"string","\u002Fog\u002Fpython-strings.png",{"id":207,"title":208,"title_en":209,"slug":210},[233],{"authors_id":234},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":236,"title":237,"title_en":21,"slug":238,"excerpt":239,"excerpt_en":21,"has_translation":15,"published_at":240,"reading_time":227,"hidden_from_listing":15,"tags":241,"thumbnail_image":21,"og_image":243,"series":244,"authors":245},132,"Python Tuples: Why All Three Points Are the Same Point","python-tuples","Three points walk into a loop and come out identical. The list was never copied three times; the name was. A tuple makes that bug impossible.","2026-10-28T12:00:00.000Z",[82,242],"tuple","\u002Fog\u002Fpython-tuples.png",{"id":207,"title":208,"title_en":209,"slug":210},[246],{"authors_id":247},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":249,"title":250,"title_en":21,"slug":251,"excerpt":252,"excerpt_en":21,"has_translation":15,"published_at":253,"reading_time":227,"hidden_from_listing":15,"tags":254,"thumbnail_image":21,"og_image":256,"series":257,"authors":258},131,"Python Sets: the Duplicate That Keeps Coming Back","python-sets","A de-duplication loop that works on clean data leaves four tags where there should be two. The bug is case, and the fix is a `set`.","2026-10-28T11:00:00.000Z",[82,255],"set","\u002Fog\u002Fpython-sets.png",{"id":207,"title":208,"title_en":209,"slug":210},[259],{"authors_id":260},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":262,"title":263,"title_en":21,"slug":264,"excerpt":265,"excerpt_en":21,"has_translation":15,"published_at":266,"reading_time":227,"hidden_from_listing":15,"tags":267,"thumbnail_image":21,"og_image":269,"series":270,"authors":271},130,"Python Dictionaries: the Key That Isn't There","python-dictionary","A word counter dies the first time it meets a word twice. The fix is one line; what takes longer is knowing which of a dict's three lookups to reach for.","2026-10-28T10:00:00.000Z",[82,268],"dictionary","\u002Fog\u002Fpython-dictionary.png",{"id":207,"title":208,"title_en":209,"slug":210},[272],{"authors_id":273},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":275,"title":276,"title_en":277,"slug":278,"excerpt":279,"excerpt_en":280,"has_translation":12,"published_at":281,"reading_time":14,"hidden_from_listing":15,"tags":282,"thumbnail_image":21,"og_image":289,"series":290,"authors":292},129,"Biar RAG nggak kena 504: pisahin jalur query dan ingestion","So Your RAG Stops Hitting 504: Split the Query Path From Ingestion","rag-pisah-jalur-query-dan-ingestion","Satu service RAG yang merangkap parsing dan menjawab kueri bakal tumbang pas ada yang upload PDF 200 halaman. Obatnya dua jalur dan satu queue.","One RAG service that both parses uploads and answers queries will fall over the moment someone uploads a 200-page PDF. The cure is two paths and one queue.","2026-10-22T01:30:00.000Z",[283,284,285,286,287,288],"rag","cloud-run","cloud-tasks","gcp","serverless","arsitektur","\u002Fog\u002Frag-pisah-jalur-query-dan-ingestion.png",{"id":291,"title":35,"title_en":36,"slug":37},8,[293],{"authors_id":294},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},{"id":296,"title":297,"title_en":298,"slug":299,"excerpt":300,"excerpt_en":301,"has_translation":12,"published_at":302,"reading_time":227,"hidden_from_listing":15,"tags":303,"thumbnail_image":21,"og_image":310,"series":311,"authors":312},128,"Linear atau graf: cara mengatur banyak agent tanpa loop abadi","Linear or Graph: How to Run Many Agents Without an Eternal Loop","multi-agen-linear-atau-grafik","Satu agent dengan dua puluh tool gampang kacau. Begitu beberapa agent saling revisi, kamu butuh graf yang mendukung cycle dan angka yang membuatnya berhenti.","One agent with twenty tools gets messy fast. Once several agents revise each other, you need a graph that allows cycles and a number that makes it stop.","2026-10-21T16:05:00.000Z",[304,305,306,307,308,309],"multi-agent","langgraph","autogen","orkestrasi","checkpoint","llm","\u002Fog\u002Fmulti-agen-linear-atau-grafik.png",{"id":291,"title":35,"title_en":36,"slug":37},[313],{"authors_id":314},{"id":111,"name":112,"slug":113,"role":114,"profile_picture":21},[316,320,323,326,329,332,335,338],{"text":317,"depth":318,"id":319},"List Comprehension pada Python",2,"list-comprehension-pada-python",{"text":321,"depth":318,"id":322},"Format Penulisan List Comprehension","format-penulisan-list-comprehension",{"text":324,"depth":318,"id":325},"Menggunakan List Comprehension","menggunakan-list-comprehension",{"text":327,"depth":102,"id":328},"Membuat list angka kuadrat","membuat-list-angka-kuadrat",{"text":330,"depth":102,"id":331},"Menggunakan kondisi","menggunakan-kondisi",{"text":333,"depth":102,"id":334},"Membuat list berisi nilai yang sama (konstan)","membuat-list-berisi-nilai-yang-sama-konstan",{"text":336,"depth":102,"id":337},"Mengubah kalimat menjadi list karakter","mengubah-kalimat-menjadi-list-karakter",{"text":339,"depth":318,"id":340},"Penutup","penutup",1793295834422]