Lewati ke konten utama

18 Pertanyaan Paling Umum tentang List di Python

Pelajari cara membuat list di Python, memilih elemen list, perbedaan antara append() dan extend(), mengapa menggunakan NumPy, dan banyak lagi.
· 15 mnt Baca

Jelajahi bersama AI

Postingan ini akan menawarkan solusi sederhana, penjelasan yang mudah diikuti dan lugas, serta beberapa tips dan trik yang dapat Anda praktikkan langsung dengan bantuan latihan interaktif!

Jika Anda ingin mempelajari tentang list dalam format kursus, lihat kursus kami Intro to Python for Data Science, yang memiliki satu bab tentang list di Python.

Latar Belakang

List semakin populer di kalangan pemula yang belajar Python maupun yang sudah berpengalaman. Jika melihat hasil penelusuran di Google Trends, minat pencarian terhadap topik ini terus meningkat setiap tahun.

Jika Anda sering berkunjung ke forum untuk menjawab atau mengajukan pertanyaan tentang pemrograman Python, seperti Stack Overflow, Quora, atau Reddit, Anda mungkin tahu alasannya.

Banyak pertanyaan Python berakhir di forum-forum ini dan terus bertahan di sana, di mana pengguna menandainya sebagai ‘duplikat’ atau ‘lengket’, memberi suara, atau mendiskusikan solusi yang tepat dengan yang lain.

Lewat postingan blog ini, DataCamp ingin membantu Anda mengupas satu topik, yakni pertanyaan-pertanyaan paling sering diajukan tentang list di Python, secara interaktif!

Apa Sebenarnya List di Python Itu?

List adalah salah satu dari empat struktur data bawaan Python, bersama dengan tuple, dictionary, dan set. List digunakan untuk menyimpan koleksi item yang terurut, yang bisa bertipe berbeda tetapi biasanya tidak. Elemen di dalam list dipisahkan dengan koma dan diapit tanda kurung siku. Seperti pada contoh berikut:

# These list elements are all of the same type
zoo = ['bear', 'lion', 'panda', 'zebra']
print(zoo)

# But these list elements are not
biggerZoo = ['bear', 'lion', 'panda', 'zebra', ['chimpanzees', 'gorillas', 'orangutans', 'gibbons']]
print(biggerZoo)

Anda melihat bahwa variabel kedua biggerZoo adalah list yang mirip dengan variabel zoo. Namun, Anda juga melihat bahwa biggerZoo memuat list lain dengan tipe monyet yang berbeda-beda di dalamnya.

Karena list di Python menyimpan koleksi item atau objek yang terurut, kita bisa mengatakan bahwa list adalah tipe sekuens, tepatnya karena berperilaku seperti sekuens. Tipe lain yang juga dianggap sebagai tipe sekuens adalah string dan tuple.

Anda mungkin bertanya apa yang istimewa dari tipe sekuens. Sederhananya, artinya program dapat melakukan iterasi atasnya! Inilah alasan list, string, tuple, dan set disebut “iterable”.

Perlu diingat bahwa konsep ini sangat penting dan bisa jadi Anda menemukan konsep ini juga di bahasa pemrograman lain yang digunakan dalam data science, seperti Scala!

Sekarang saatnya masuk ke inti! Mari telusuri pertanyaan-pertanyaan tentang list yang mungkin menghantui Anda sebagai programmer Python. Berikut daftar semua pertanyaan yang akan kita jawab dalam tutorial ini:

1. Kapan Menggunakan List di Python dan Kapan Menggunakan Tuple, Dictionary, atau Set

Pembukaannya memang terlihat sederhana saat dibaca, tetapi ketika Anda benar-benar mengerjakan skrip Python kecil atau sebuah proyek, pilihan antara list atau tipe sekuens lain mungkin tidak terlalu jelas.

Namun, memilih struktur data yang tepat untuk data Anda itu krusial!

Lanjutkan membaca untuk mengetahui lebih lanjut.

List vs Tuple

Tuple digunakan untuk mengumpulkan daftar elemen terurut yang tidak dapat diubah (immutable). Ini berarti bahwa:

  • Anda tidak dapat menambahkan elemen ke tuple. Tidak ada metode append() atau extend() untuk tuple,
  • Anda tidak dapat menghapus elemen dari tuple. Tuple tidak memiliki metode remove() atau pop(),
  • Anda dapat mencari elemen dalam tuple karena hal ini tidak mengubah tuple.
  • Anda juga dapat menggunakan operator in untuk memeriksa apakah suatu elemen ada dalam tuple.

Jadi, jika Anda mendefinisikan sekumpulan nilai konstan dan yang akan Anda lakukan hanyalah mengiterasinya, gunakan tuple alih-alih list. Ini akan lebih cepat daripada bekerja dengan list dan juga lebih aman, karena tuple berisi data yang “tulis-lindung”.

List vs Dictionary

  • List menyimpan koleksi item terurut, jadi mempertahankan urutan tertentu. Dictionary tidak memiliki urutan.
  • Dictionary mengaitkan setiap key dengan sebuah value, sedangkan list hanya memuat value.

Gunakan dictionary saat Anda memiliki sekumpulan key unik yang tidak berurutan dan dipetakan ke value.

Catatan bahwa karena ada key dan value yang saling terhubung, kinerja akan lebih baik daripada list dalam kasus ketika Anda memeriksa keanggotaan sebuah elemen.

List vs Set

  • Sama seperti dictionary, set tidak memiliki urutan dalam koleksi itemnya. Berbeda dengan list.
  • Set mensyaratkan item yang dikandungnya dapat di-hash, sedangkan list menyimpan item yang tidak dapat di-hash.
  • Set mengharuskan item Anda unik dan immutable. Duplikasi tidak diizinkan dalam set, sedangkan list mengizinkan duplikasi dan bersifat mutable.

Gunakan set ketika Anda memiliki sekumpulan nilai unik yang tidak berurutan, immutable, dan dapat di-hash.

Anda tidak yakin nilai mana yang dapat di-hash?

Lihat daftar di bawah ini untuk memastikan:

Dapat di-hashTidak dapat di-hash
FloatDictionary
IntegerSet
TupleList
String 
frozenset() 

Tip: jangan langsung percaya kata kami! Cobalah sendiri di bawah ini dan bereksperimenlah di shell IPython :)

# Import the `collections` library
____ ____

# Check if a dictionary is hashable
print(isinstance({}, collections.Hashable))

# Check if a float is hashable
print(isinstance(0.125, collections.Hashable))

Catatan bahwa karena Anda bekerja dengan item yang dapat di-hash, pengecekan keanggotaan (menguji apakah suatu elemen merupakan bagian dari sekuens Anda) akan lebih cepat dengan set daripada dengan list.

2. Cara Memilih Elemen dari Sebuah List

Jika Anda ingin bekerja dengan baik menggunakan list, Anda perlu tahu cara mengaksesnya.

Biasanya Anda mengakses list untuk mengubah nilai tertentu, memperbarui atau menghapusnya, atau melakukan operasi lain. Cara mengakses list, dan secara umum semua tipe sekuens, adalah dengan menggunakan operator indeks [ ]. Di dalamnya, Anda menaruh nilai integer.

Contohnya seperti ini:

# Select the first list element
oneZooAnimal = biggerZoo[0]

# Print `oneZooAnimal`
print(____)

Jalankan kodenya dan lihat apa yang Anda dapatkan. Anda akan melihat bahwa elemen pertama dari variabel biggerZoo dikembalikan. Ini mungkin agak membingungkan atau mengejutkan pada awalnya, tetapi indeks dimulai dari 0, bukan 1.

Cara Mengambil Elemen Terakhir dari Sebuah List

Jawaban untuk pertanyaan ini merupakan tambahan dari penjelasan di bagian sebelumnya.

Cobalah memberi nilai negatif, seperti -1 atau -2, pada operator indeks untuk mengambil elemen terakhir dari list biggerZoo kita!

# Pass -1 to the index operator on `biggerZoo`
monkeys = ___
print(monkeys)

# Pass -2 to the index operator on `biggerZoo`
zebra = ___
print(zebra)

Tidak terlalu sulit, bukan?

Apa Arti Error Index out of Range?

Error ini sering Anda lihat, terutama saat baru belajar pemrograman atau baru dengan Python.

Cara terbaik untuk memahami arti error ini adalah dengan mencobanya sendiri.

Gunakan widget pembelajaran interaktif di atas dan coba masukkan angka negatif yang terlalu kecil atau angka positif yang terlalu besar!

Seperti yang Anda lihat, Anda bisa mendapat error “Index Out Of Range” ketika Anda memberikan nilai integer ke operator indeks yang lebih besar atau jauh lebih kecil daripada list Anda! Artinya Anda menetapkan nilai atau merujuk ke indeks yang belum ada.

Potongan berikut adalah contoh kode yang akan memicu error “Index Out Of Range”. Jalankan dan lihat sendiri!

# Run this code to trigger an "Index Out Of Range" Error
biggerZoo[6]

Notasi Slice dalam List

Ketika Anda baru dalam pemrograman atau Python, topik ini bisa terasa membingungkan.

Secara umum, Anda menggunakan notasi slice saat ingin memilih lebih dari satu elemen list sekaligus. Mirip saat memilih satu elemen saja, Anda menggunakan tanda kurung siku ganda. Bedanya, alih-alih hanya integer, Anda juga menambahkan : di antara kurung siku ganda, seperti ini:

# Use the slice notation like this
someZooAnimals = biggerZoo[2: ]

# Print to see what you exactly select from `biggerZoo`
print(someZooAnimals)

# Try putting 2 on the other side of the colon
otherZooAnimals = biggerZoo[____]

# Print to see what you're getting back
print(otherZooAnimals)

Anda melihat bahwa sekarang kita mendapatkan list biggerZoo, tetapi hanya mulai dari entri panda pada indeks 2 dan seterusnya. Dengan kata lain, kita mulai dari indeks 2 dan pergi hingga akhir list, karena tidak ada integer lain yang ditentukan.

Bagaimana jika kita lakukan kebalikannya?

Coba jalankan potongan kode di atas untuk membuktikan dugaan Anda!

Anda melihat bahwa sekarang kita hanya mendapatkan bear dan lion. Kali ini kita mulai dari indeks 0 dan berakhir pada indeks 2. Berlawanan dengan dugaan Anda, hasilnya tidak termasuk entri panda.

Secara umum, berlaku hal berikut:

# items start through the end (but the end is not included!)
a[start:end]

# items start through the rest of the array
a[start:]    

# items from the beginning through the end (but the end is not included!)
a[:end]

Tip: dengan hanya memberi tanda titik dua :, Anda akan menyalin list apa adanya!

Selain notasi slice sederhana, ada juga nilai langkah (step), yang bisa digeneralisasi seperti ini:

# start through not past end, by step
a[start:end:step]

Lalu apa fungsi nilai step ini?

Nilai ini memungkinkan Anda “melangkah” melalui list dan memilih hanya elemen yang tercakup oleh nilai step. Contoh:

# Print to see how the step value influences your result
print(biggerZoo[2::2])
print(biggerZoo[1::3])

Catatan bahwa jika Anda tidak menentukan nilai step, nilainya akan diatur ke 1. Tidak ada elemen yang dilewati saat melangkah melalui list.

Ingat bahwa hasil Anda tidak termasuk indeks end yang Anda tetapkan pada notasi slice!

Cara Memilih Elemen Secara Acak dalam List

Anda dapat memilih elemen acak dari list dengan paket random:

# Import `choice` from the `random` library
from ____ import ____

# Construct your `list` variable with a list of the first 4 letters of the alphabet
list = ['_','_','_','_']

# Print your random 'list' element
print(choice(list))

Jika Anda juga ingin memilih elemen list secara acak melalui indeks list Anda, Anda bisa menggunakan metode randrange dari pustaka random:

# Import `randrange` from the `random` library
from ____ import ____

# Construct your `randomLetters` variable with a list of the first 4 letters of the alphabet
randomLetters = ['_','_', '_', '_']

# Select a random index from 'randomLetters`
randomIndex = randrange(0,len(randomLetters))

# Print your random element from `random`
print(randomLetters[randomIndex])

Tip: pertimbangkan untuk memeriksa pustaka random, karena akan sangat berguna saat Anda memrogram di Python!

3. Cara Mengubah List Python menjadi Struktur Data Lain

Terkadang, list bukanlah yang Anda butuhkan. Dalam kasus ini, Anda mungkin ingin tahu cara mengubah list menjadi struktur data yang lebih sesuai. Di bawah ini, kami rangkum beberapa pertanyaan transformasi paling umum beserta jawabannya.

Cara Mengonversi List menjadi String

Anda mengonversi list menjadi string dengan menggunakan ''.join(). Operasi ini menyatukan semua string dalam list dan mengembalikannya sebagai satu string. Baca lebih lanjut di sini.

# List of Strings to a String
listOfStrings = ['One', 'Two', 'Three']
strOfStrings = ''.join(listOfStrings)
print(strOfStrings)

# List Of Integers to a String
listOfNumbers = [1, 2, 3]
strOfNumbers = ''.join(str(n) for n in listOfNumbers)
print(strOfNumbers)

Catatan bahwa jika list Anda hanya berisi integer, Anda harus mengonversi elemen menjadi string sebelum melakukan join. Ini ditunjukkan pada contoh kedua di blok kode interaktif di atas.

Konversi dari integer ke string dilakukan dengan melakukan loop atas list asli listOfNumbers. Jika Anda ingin tahu lebih banyak tentang cara melakukan loop atas list, lihat pertanyaan 12 dan jawabannya.

Cara Mengonversi List menjadi Tuple

Anda dapat mengubah list menjadi tuple di Python dengan fungsi tuple(). Berikan list Anda ke fungsi ini, dan Anda akan mendapatkan tuple sebagai hasilnya!

Ingat: tuple bersifat immutable. Anda tidak dapat mengubahnya setelahnya!

Tip: Anda dapat mencoba mengubah listOfStrings menjadi tuple dalam latihan interaktif di bagian berikutnya.

Cara Mengonversi List menjadi Set di Python

Seperti yang Anda ingat, set adalah koleksi item unik yang tidak memiliki urutan. Itu berarti bukan hanya duplikasi dalam list asli Anda akan hilang saat Anda mengonversinya menjadi set, tetapi juga urutan elemen list.

Anda dapat mengubah list menjadi set dengan fungsi set(). Cukup berikan list Anda ke fungsi ini!

Sekarang latihlah mengonversi listOfStrings menjadi tuple dan set di sini:

# Pass your list to `tuple()`
tuple(___)

# Transform your list into a set
set(___)

Cara Mengonversi List menjadi Dictionary

Sebuah dictionary bekerja dengan key dan value, jadi konversi dari list ke dictionary mungkin kurang langsung. Misalnya Anda memiliki list seperti ini:

helloWorld = ['hello','world','1','2']

Anda perlu memastikan bahwa ‘hello’ dan ‘world’ serta ‘1’ dan ‘2’ diperlakukan sebagai pasangan key-value. Caranya adalah memilihnya dengan notasi slice dan memberikannya ke zip().

zip() bekerja seperti yang diharapkan: “menyatukan” elemen-elemen. Dalam kasus ini, ketika Anda menggabungkan elemen helloWorld helloWorld[0::2] dan helloWorld[1::2], keluaran Anda akan berupa:

list(zip(helloWorld))

Catatan bahwa Anda perlu menggunakan list() untuk mencetak hasil fungsi zip().

Anda kemudian memberikannya ke fungsi dict(), yang akan menafsirkan hello sebagai key dan world sebagai value. Demikian pula, 1 akan ditafsirkan sebagai key dan 2 sebagai value.

Jalankan kode di bawah ini untuk mengonfirmasi:

# Convert to a dictionary
helloWorldDictionary = dict(zip(helloWorld[0::2], helloWorld[1::2]))

# Print out the result
print(helloWorldDictionary)

Catatan bahwa elemen kedua yang diberikan ke fungsi zip() menggunakan nilai step untuk memastikan hanya elemen world dan 2 yang dipilih. Demikian pula, elemen pertama menggunakan nilai step untuk memilih hello dan 1.

Jika list Anda besar, Anda mungkin ingin melakukan hal seperti ini:

a = [1, 2, 3, 4, 5]

# Create a list iterator object
i = iter(a)

# Zip and create a dictionary
print(dict(zip(i, i)))

Catatan bahwa objek iterable dapat memberikan iterator. Iterator, yang memiliki metode .__next__, menyimpan informasi tentang posisi Anda dalam iterasi: ia “tahu” elemen berikutnya dalam iterasi.

4. Cara Menentukan Ukuran List Anda di Python

Anda dapat memberikan list ke fungsi len() untuk mendapatkan panjang list.

Uji di bawah ini! Kami sudah membuat list justAList yang bisa Anda gunakan.

# Pass `justAList` to `len()`
len(____)

Catatan bahwa fungsi len() tidak spesifik untuk mendapatkan panjang list saja, tetapi juga dapat digunakan dengan sekuens atau koleksi lain, seperti dictionary, set, string, dan sebagainya. Anda dapat menemukan fungsi bawaan lain secara umum di sini.

5. Apa Perbedaan antara Metode Python append() dan extend()?

Mari mulai menjawab pertanyaan ini dengan mengulas kembali konsep iterable yang dijelaskan di bagian pertama postingan ini:

Ingat bahwa suatu nilai disebut iterable ketika program Anda dapat melakukan iterasi atasnya. Dengan kata lain, iterable adalah nilai yang merepresentasikan sekuens dari satu atau lebih nilai. Seperti yang mungkin Anda baca di bagian pertama, list adalah sekuens, dan semua instance dari tipe sekuens Python bersifat iterable.

Tip: Anda dapat memeriksa apakah sebuah variabel iterable bila memiliki metode .__iter__, seperti pada potongan kode ini:

# This is your list
list = [5, 6, 7, 8, 9]

# Check whether it's iterable
list.__iter__

Jalankan kode di atas dan coba contoh sederhana lainnya di shell IPython!

Sekarang konsep iterable sudah jelas, kita bisa mulai memahami perbedaan antara dua metode tersebut. extend(), di satu sisi, menerima sebuah iterable (benar, ia menerima list, set, tuple, atau string!), dan menambahkan setiap elemen iterable ke list satu per satu.

append(), di sisi lain, menambahkan argumennya ke akhir list sebagai satu item tunggal, yang berarti ketika fungsi append() menerima iterable sebagai argumennya, iterable tersebut diperlakukan sebagai satu objek.

Pelajari potongan kode di bawah ini dan mainkan sendiri untuk memahami perbedaan kedua metode ini:

# Append [4,5] to `shortList`
shortList.append([4, 5])

# Use the print() method to show shortList
print(____)

# Extend `longerList` with [4,5]
longerList.extend([4, 5])

# Use the print() method to see longerList
print(____)

Anda dapat melihat bahwa extend() adalah versi yang lebih efisien dibanding memanggil append() berkali-kali.

6. Cara Menggabungkan (Concatenate) List di Python

Untuk menggabungkan list, gunakan operator +. Ini akan menghasilkan list baru yang merupakan gabungan dari dua list Anda tanpa mengubah list asli.

Catatan bahwa menggabungkan dan menambahkan (append) bisa membingungkan. append() berbeda dari operator +, yang pada gilirannya sangat mirip dengan metode extend(), tetapi tidak persis sama… Anda melihat bahwa dengan append() dan extend(), Anda mengubah list asli, sedangkan dengan operator +, Anda membuat variabel list lain.

Cobalah sendiri dan bandingkan dengan contoh pada potongan kode sebelumnya:

# Concatenate `shortList` with `[4,5]`
plusList = shortList + [4,5]

#Use the `print()` method to see `plusList`
print(____)

7. Cara Mengurutkan List di Python

Ada dua cara sederhana untuk mengurutkan nilai dalam list Anda secara menaik atau menurun:

  • Gunakan metode sort()
  • Atau gunakan fungsi sorted() dan berikan list sebagai argumen

Fungsi sorted() dapat diterapkan pada objek Iterable apa pun, artinya ia juga menerima string, set, dictionary saat diberikan kepadanya!

Tip: coba sendiri! Kami sudah membuat dua list, rooms dan orders, yang bisa Anda urutkan menggunakan dua teknik di atas :)

# Use sort() on the rooms list
____.sort()

# Print out rooms to see the result
print(____)

# Now use the sorted() function on orders
sorted(____)

# Print out orders
print(____)

Catatan bagaimana list asli Anda berubah setelah Anda melakukan pengurutan. Disarankan menggunakan ini ketika Anda sudah tidak membutuhkan list asli lagi.

8. Cara Mengkloning atau Menyalin List di Python

Ada banyak cara untuk mengkloning atau menyalin list:

  • Anda dapat melakukan slice pada list asli dan menyimpannya ke variabel baru: newList = oldList[:]
  • Anda dapat menggunakan fungsi bawaan list(): newList = list(oldList)
  • Anda dapat menggunakan pustaka copy:
    • Dengan metode copy(): newList = copy.copy(oldList)
    • Jika list Anda berisi objek dan Anda ingin menyalinnya juga, gunakan copy.deepcopy(): copy.deepcopy(oldList)

Cobalah di bawah ini! Kami sudah membuat list groceries untuk Anda salin dan bagikan dengan teman-teman.

# Copy the grocery list by slicing and store it in the `newGroceries` variable
newGroceries = groceries[__]

# Copy the grocery list with the `list()` function and store it in a `groceriesForFriends` variable
groceriesForFriends = list(____)

# Import the copy library as c
import ____ as __

# Create a `groceriesForFamily` variable and assign the copied grocery list to it
groceriesForFamily =  c.copy(____)

# Use `deepcopy()` and assign the copied list to a `groceriesForKids` variable
groceriesForKids= c.deepcopy(____)

Catatan bahwa ketika Anda menggunakan metode salin ‘sederhana’, list asli Anda akan terpengaruh. Namun, jika Anda menggunakan metode deepcopy(), hal ini dapat dicegah. Jalankan kode di bawah ini untuk melihat apa yang terjadi:

# This is your list
objectList = ['a','b',['ab','ba']]

# Copy the `objectList`
copiedList = objectList[:]

# Change the first list element of `copiedList`
copiedList[0] = 'c'

# Go to the third element (the nested list) and change the second element
copiedList[2][1] = 'd'

# Print out the original list to see what happened to it
print(objectList)

Bagi Anda yang sudah membawa pemahaman list di Python ke tingkat berikutnya, bagian selanjutnya menawarkan jawaban sederhana untuk pertanyaan kompleks Anda.

Namun, bagi Anda yang bertanya apa yang melampaui list, keuntungan apa yang ditawarkan pustaka alih-alih struktur list bawaan, bagian berikutnya akan sangat berguna.

Lanjutkan membaca untuk tahu lebih banyak!

9. Bagaimana Cara Kerja List Comprehension di Python?

Secara sederhana, list comprehension adalah cara elegan untuk membangun list Anda. Bagian terbaiknya bagi yang menyukai matematika adalah bentuknya yang mirip daftar matematis. Nilai sendiri:

[x**2 for x in range(10)]

Apa artinya? Anda mengambil semua angka dari 0 hingga 10, di mana 10 tidak termasuk, lalu mengalikan setiap angka tersebut dengan 2. Jalankan kode di atas untuk melihat apakah hasilnya sesuai harapan.

Tidak terlalu sulit, bukan? Mari naik satu tingkat!

Misalnya Anda ingin membuat list yang sama seperti sebelumnya, tetapi hanya ingin mengalikan angka yang habis dibagi 2. Ini juga mudah dengan bantuan list comprehension:

[x**2 for x in range(10) if x%2==0]

Anda cukup menambahkan kondisi, yang ditandai dengan if, ke pernyataan asli Anda. Jika kondisi itu BENAR, angka tersebut akan dipertimbangkan untuk dikalikan 2. Dalam kasus ini, kondisi kita adalah angka tersebut habis dibagi 2 (tanpa sisa hasil pembagian).

Secara lebih umum, Anda juga dapat menggunakan list comprehension untuk mentransformasi list menjadi list lain—kedengarannya lebih sulit, bukan?

Pertimbangkan contoh berikut:

myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[(lambda x: x*x)(x) for x in myList]

Pada contoh ini, Anda sudah memiliki list myList yang Anda transformasikan lewat list comprehension: Anda melihat lagi for x in myList, untuk setiap elemen list di myList, sebuah operasi dilakukan.

Selanjutnya, Anda melihat (lambda x: x*x) disertakan. Sederhananya, ketahuilah bahwa fungsi lambda adalah fungsi anonim yang dibangun saat runtime. Mengingat potongan kode itu hanya sebagai penanda, Anda bisa mengabaikannya dan fokus pada x*x.

Anda melihat bahwa fungsi ini mengambil satu elemen dan mengalikannya dengan dirinya sendiri. Ini fungsi anonim, jadi Anda perlu memberikan elemen list sebagai masukan fungsi lambda. Itulah sebabnya Anda melihat (lambda x: x*x)(x).

Dengan kata lain, Anda bisa menulis ulang seluruh baris kedua dari potongan kode di atas sebagai:

f = lambda x: x*x
[f(x) for x in range(10)]

Di mana Anda terlebih dahulu mendefinisikan fungsi lambda yang menyatakan ingin mengalikan elemen dengan dirinya sendiri, lalu pada baris kedua memberikan elemen list untuk memastikan setiap elemen dikalikan dengan dirinya sendiri.

Catatan bahwa selain list comprehension, juga ada set dan dictionary comprehension.

Ini sudah cukup banyak, namun masih banyak lagi yang bisa dieksplorasi tentang list comprehension.

Teruslah membaca pertanyaan yang sering diajukan berikut untuk mempelajari nested list comprehension dan melihat contoh praktis lainnya tentang apa yang dapat dilakukan list comprehension dalam pemrograman Python Anda!

10. Cara Menghitung Kemunculan Item List di Python

Karena list tidak memiliki kriteria keunikan item seperti set, Anda mungkin ingin tahu bukan hanya berapa kali satu item tertentu muncul, tetapi juga berapa kali setiap item muncul dalam list Anda.

Di bawah ini Anda akan menemukan jawaban untuk kedua pertanyaan!

Menghitung kemunculan satu item dalam list

Untuk menghitung kemunculan satu item list saja, Anda dapat menggunakan metode count():

# Count the occurrences of the number 4
print([1, 2, 9, 4, 5, 4, 1].count(4))

# Count the occurrences of the letter "a"
list = ["d", "a", "t", "a", "c", "a", "m", "p"]
list.count("a")

Menghitung kemunculan semua item dalam list juga dikenal sebagai “tallying” list, atau membuat penghitung tally.

Menghitung semua item dalam list dengan count()

Untuk menghitung kemunculan item dalam list, Anda juga dapat menggunakan list comprehension dikombinasikan dengan metode count():

list= ["a","b","b"]
[[x,list.count(x)] for x in set(list)]

Pada potongan kode ini, Anda pertama-tama melihat list dikonversi menjadi set. Ini memastikan hanya item yang unik yang dipertahankan, yaitu a dan b. Lalu Anda mengatakan bahwa untuk setiap item set, Anda ingin mengambil item itu dan memberikannya ke metode count()

Ingat bahwa set hanya berisi item unik!

Dalam kasus ini, pertama a akan diberikan ke list.count(x), dan semua kemunculan a dalam list asli Anda akan dihitung.

Menghitung semua item list dengan Counter()

Sebagai alternatif, ada metode Counter() yang lebih cepat dari pustaka collections:

# Import `Counter` from the `collections` library
from collections import Counter

# This is your list
list = ["a","b","b"]

# Pass `list` to `Counter()`
Counter(list)

Catatan bahwa Counter() umumnya lebih cepat ketika Anda ingin menghitung semua item list.

11. Cara Membagi List Python menjadi Potongan Berukuran Sama

Untuk membagi list menjadi bagian berukuran sama, Anda dapat menggunakan fungsi zip() dikombinasikan dengan iter():

# Your list `x`
x = [1,2,3,4,5,6,7,8,9]

# Split `x` up in chunks of 3
y = zip(*[iter(x)]*3)

# Use `list()` to print the result of `zip()`
list(y)

Kode di atas bekerja sebagai berikut:

  • iter() adalah iterator atas suatu sekuens.
  • [iter(x)] * 3 menghasilkan list dengan tiga objek listiterator: setiap list iterator adalah iterator dari x.
  • * yang diberikan ke fungsi zip() di awal akan melepaskan (unpack) sekuens menjadi argumen sehingga Anda memberikan iterator yang sama tiga kali ke fungsi zip(), dan ia mengambil satu item dari iterator setiap kali.

Tunggu. Langkah terakhir ini belum jelas.

Mari pandu selangkah demi selangkah:

  1. Anda akan memiliki tiga objek list iterator, yang dapat Anda bayangkan seperti:

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


  1. Pertama kali, zip() akan mengambil satu elemen dari list secara berurutan, yang menyisakan Anda dengan:

[1][2][3]


Catatan bahwa objek iterator akan melacak elemen mana yang berikutnya dalam iterasi!

  1. Kedua kalinya, elemen akan ditambahkan ke tiga list yang baru Anda buat, dan Anda akan mendapatkan:

[1, 4], [2, 5], [3, 6]


  1. Terakhir, Anda mengikuti prosedur yang sama, dan hasilnya:

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


  1. Menggabungkan tiga list ini akan menghasilkan:

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

Namun, jika Anda memutuskan untuk memasukkan logika ini ke dalam sebuah fungsi, Anda dapat mengikuti pendekatan berikut:

Fungsi chunks() Anda menerima list dan ukuran potongan (chunk size) sebagai masukan. Lalu fungsi akan mencetak: “Yield successive (ukuran chunk Anda)-sized chunks from list” (yaitu list yang Anda berikan ke metode chunks()).

Kemudian Anda melihat range(0, len(list), chunkSize): list ini dimulai dari 0 dan berakhir pada integer yang menunjukkan panjang list Anda. Nilai step ditetapkan sama dengan nilai chunkSize yang Anda berikan ke chunks().

Untuk setiap elemen dalam list yang dibentuk oleh range(), Anda menghasilkan potongan dari list asli, dimulai di indeks elemen yang diberikan dan berakhir pada indeks + ukuran chunk yang diberikan.

Misalnya, jika indeks 0 melewati for loop, list [0:2] akan diberikan. Pada iterasi berikutnya, indeks 2 yang melewati for loop (ingat nilai step!), dan potongan list asli Anda, [2:4], akan dihasilkan.

Catatan bahwa Anda menggunakan pprint() atau pretty print untuk mencetak hasil.

Anda juga bisa menggunakan list comprehension alih-alih menulis fungsi:

# Set up your list and chunk size
list = range(0, 50)
chunk = 5

# Split up your list into chunks
[list[i:i + chunk] for i in range(0, len(list), chunk)]

12. Cara Melakukan Loop atas List di Python

Anda dapat dengan mudah melakukan loop melalui list mana pun dengan for loop. Bagi Anda yang belum banyak bekerja dengan for loop, cara kerjanya adalah: for loop memungkinkan Anda melakukan sebuah aksi untuk setiap elemen dalam list Anda.

Di Python, for loop terlihat seperti ini:

# This is your list
mylist = [[1,2,3],[4,5,6,7],[8,9,10]]

# Loop over your list and print all elements that are of size 3
for x in mylist:
      if len(x)==3:
        print(x)

Anda memiliki list mylist, dan Anda memberi tahu Python untuk memeriksa apakah panjang setiap elemen list sama dengan 3. Karena list kita berisi dua list yang masing-masing memiliki tiga elemen, yaitu [1,2,3] dan [8, 9,10], hanya ini yang akan dicetak.

Catatan bahwa x pada potongan kode di atas dapat diubah menjadi element, listElement, atau nama lain yang Anda inginkan. Coba di konsol!

Anda melihat hasilnya tidak menampilkan indeks elemen. Jika Anda ingin mengiterasi list dengan memanfaatkan indeks, Anda dapat melakukannya seperti ini:

# This is your list
myList = [3,4,5,6]

# Loop over `myList` and print tuples of all indices and values 
for i, val in enumerate(myList):
     print(i, val)

Karena Anda ingin mencetak bukan hanya elemen list tetapi juga indeksnya, tentu Anda harus menampilkannya dalam for loop. Itulah sebabnya kita menggunakan enumerate(myList), yang akan mengembalikan indeks dan nilai. Secara alami, kita juga harus menampilkannya di awal for: Anda melihat i, val untuk menandakan bahwa kita mengharapkan indeks dan nilai sebagai hasil.

Catatan bahwa Anda juga dapat menggunakan list comprehension untuk melakukan loop atas list. Di sini, hasilnya sudah dicetak tanpa perlu memanggil print():

[x for x in myList if len(x)==3]

13. Cara Membuat List Datar dari List

Untuk membuat list sederhana dari list berisi list, Anda dapat menggunakan fungsi sum(). Jangan lupa berikan list Anda dan sebuah list kosong padanya:

# Your initial list of lists
list = [[1,2],[3,4],[5,6]]

# Flatten out your original list of lists with `sum()`
sum(list, [])

Anda juga dapat menggunakan dua pendekatan lain untuk “memipihkan” list Anda:

# You can reduce the lists of lists of lists like this
from functools import reduce
print(reduce(lambda x,y: x+y,listOfLists))

# Or you can use list comprehension
print([item for sublist in listOfLists for item in sublist])
    • Anda menggunakan metode reduce() dan memberikan fungsi lambda. Metode reduce() memastikan iterable Anda direduksi menjadi satu nilai. Bagaimana ia direduksi, Anda tentukan dengan fungsi yang diberikan. Dalam hal ini, Anda mengatakan ingin menjumlahkan elemen secara kumulatif: yang terjadi adalah [1,2] ditambahkan ke [3,4] lalu hasilnya ditambahkan ke [5,6]. Secara visual:
([1,2]+[3,4])+[5,6]

Ingat bahwa operator + menggabungkan list.

  • Pilihan kedua untuk membuat list datar dari list berisi list adalah menggunakan list comprehension. Pernyataan for loop bertingkat ini memang tidak mudah. Intinya, Anda pertama mengambil sublist in list atau [1, 2], [3, 4], [5, 6] lalu mempertimbangkan item for item in sublist, mencetak setiap item dari sublist.

Cara lain untuk melihat nested list comprehension ini adalah menuliskannya kembali sebagai for loop biasa:

list1 = []

for sublist in list:
  for item in sublist:
    list1.append(item)

14. Cara Mendapatkan Irisan (Intersection) dari Dua List Python

Irisan List Menggunakan List Comprehension

Jika Anda ingin mendapatkan irisan dari dua list, Anda dapat menggunakan fungsi filter().

Hal ini ditunjukkan pada latihan di bawah. Kami sudah mendefinisikan dua list untuk Anda, list1 dan list2. Gunakan shell IPython jika Anda ingin memeriksa isi list.

# Intersect both lists with list comprehension
intersection = [list(filter(lambda x: x in list1, sublist)) for sublist in list2]

# Print the result of the intersection
print(____)

Pada potongan kode di atas, bagian filter() mengambil setiap item sublist dan memeriksa apakah item tersebut ada di list sumber list1. List comprehension dieksekusi untuk setiap sublist di list2.

Catatan bahwa karena filter() mengembalikan iterable alih-alih list, Anda perlu membungkus yang Anda berikan ke filter() dengan list(). Coba hilangkan list() untuk mencobanya sendiri!

Untuk keterbacaan yang lebih baik, Anda juga bisa menggunakan nested list comprehension:

# An intersection of both lists, stored in `intersection`
intersection = [[x for x in sublist if x in list1] for sublist in list2]

# Print the result of the intersection
print(intersection)

Mengiris List dengan set()

Jika urutan elemen tidak penting dan Anda tidak perlu khawatir tentang duplikasi, Anda dapat menggunakan irisan set (set intersection):

# Make use of the list and set data structures
print(list(set(list1) & set(list2)))

# Use `intersection()`
print(list(set(list1).intersection(list2)))

Pada contoh pertama, Anda mengonversi kedua list menjadi set, mengirisnya, lalu mengeluarkannya lagi sebagai list. Urutan dalam list keluaran akan acak. Anda juga dapat mengonversi list yang lebih besar menjadi set, setelah itu Anda bisa mendapatkan irisan set tersebut dengan iterable apa pun menggunakan intersection().

Catatan bahwa untuk dua pendekatan ini bekerja, list Anda tidak boleh berisi list lain. Itulah alasan list2 terlihat berbeda. Cetak saja untuk memastikan!

15. Cara Menghapus Duplikasi dari List di Python

Seperti dijelaskan di bagian pertama postingan ini, sebaiknya pilih set jika Anda ingin menyimpan koleksi item unik yang tidak berurutan.

Untuk membuat set dari iterable apa pun, Anda cukup memberikannya ke fungsi bawaan set(). Jika nanti Anda memerlukan list kembali, Anda dapat memberikan set tersebut ke fungsi list() dengan cara yang sama.

Ingat bahwa iterable bisa berupa list, dictionary, … Periksa apakah suatu variabel iterable dengan menerapkan metode .__iter__ padanya.

Contoh berikut dengan jelas menunjukkan penggunaan set() untuk menghapus semua duplikasi dari list Anda:

# Your list with duplicate values
duplicates = [1, 2, 3, 1, 2, 5, 6, 7, 8]

# Print the unique `duplicates` list
print(list(set(duplicates)))

# A list with small numbers 
smallNumbers = [1, 2, 3]

# Print the unique `duplicates` list without the small numbers
list(set(duplicates) - set(smallNumbers))

Seperti dapat Anda lihat dari hasil terakhir, urutan asli list Anda tidak dipertahankan setelah Anda mengurangkan elemen set dari smallNumbers. Seperti yang sudah Anda ketahui, set sendiri merupakan koleksi tak berurutan, jadi urutan apa pun yang ada di list Anda akan hilang. Saat Anda mengonversi set kembali menjadi list, sebuah urutan acak akan dibuat untuk Anda.

Jika urutan elemen penting bagi Anda, maka Anda harus menggunakan mekanisme yang berbeda. Halaman ini membahas topik tersebut lebih detail.

16. Mengapa NumPy alih-alih List Python?

Secara umum, ada empat alasan mengapa programmer Python lebih memilih array NumPy daripada list di Python:

  • karena array NumPy lebih ringkas daripada list.
  • karena akses baca dan tulis item lebih cepat dengan NumPy.
  • karena NumPy bisa lebih nyaman digunakan, berkat banyaknya operasi vektor dan matriks bawaan
  • karena NumPy bisa lebih efisien digunakan karena diimplementasikan dengan lebih efisien.

17. Cara Membuat Array NumPy Kosong

Jika Anda hanya ingin membuat array NumPy kosong, Anda dapat mengeksekusi berikut ini:

import numpy
numpy.array([])

Namun, jika tujuan Anda menginisialisasi array NumPy, Anda juga bisa mengikuti salah satu pendekatan berikut:

# Make a NumPy array of four rows and two columns and filled with 0
numpy.zeros(shape=(4,2))

# Make a NumPy array of 1 values of three columns
numpy.ones(3)

# Make an empty NumPy array
numpy.empty(shape=(0,0))

Pastikan untuk melihat dokumentasi ini jika Anda mencari cara lain untuk menginisialisasi array NumPy.

18. Cara Melakukan Operasi Matematika dengan List di Python

Sering kali, kita tidak hanya menggunakan list untuk menyimpan kumpulan nilai, tetapi juga untuk melakukan operasi matematika terhadapnya. Bagian ini akan membahas beberapa pertanyaan paling sering tentang melakukan matematika dengan list.

Cara Menghitung Rata-Rata Tertimbang dari List

Rata-rata tertimbang mirip dengan rata-rata biasa tetapi sedikit berbeda: rata-rata tertimbang mengembalikan angka yang bergantung pada variabel nilai dan bobot.

Definisi ini mungkin terasa berat di awal. Mari melihat contoh:

cost = [0.424, 0.4221, 0.4185, 0.4132, 0.413]
cases = [10, 20, 30, 40, 50]

Anda bisa dengan mudah menghitung rata-rata tertimbang dengan potongan kode berikut:

for c in range(len(cost)):
   cost[c] = (cost[c] * cases[c] / sum(cases))
cost = sum(cost)
print(cost)

Tetapi, Anda juga bisa memilih salah satu dari dua pendekatan berikut. Pertama, Anda bisa menggunakan:

sum(cost[c] * cases[c] / sum(cases) for c in range(len(cost)))

Atau Anda bisa menggunakan yang ini:

sum(cost[c] * cases[c] for c in range(len(cost))) / sum(cases)

Terakhir, Anda juga dapat menghitung rata-rata tertimbang list Anda dengan bantuan fungsi zip().

Tip: buat variabel costAndCases yang Anda isi dengan fungsi zip(), dengan variabel cost dan case diberikan padanya. Anda akan melihat list lain dibuat dengan hanya tuple. Nilai pertama tiap tuple menyatakan biaya, sedangkan elemen kedua menyatakan jumlah kasus yang dapat dibeli dengan harga tersebut.

# See what `zip()` does to your `cost` and `cases`
print(list(zip(____, ____)))

# Calculate the weighted average
print(sum([x * y for x, y in zip(cost, cases)]) / sum(cases))

Ingat apa yang dilakukan zip() pada list Anda? Gampang, ia “merapatkan” list Anda. Misalnya, zip(cost, cases) akan menghasilkan [(0.424, 10), (0.4221, 20), (0.4185, 30), (0.4132, 40), (0.413, 50)].

Cara Menghitung Kuantil dari List di Python

Kuantil penting untuk membuat ringkasan dataset Anda, selain nilai minimum dan maksimum. Anda juga memiliki persentil ke-25, ke-50, dan ke-75, yang disebut juga kuartil pertama, median, dan kuartil ketiga.

Artinya, secara total, Anda memerlukan lima angka untuk merangkum keseluruhan dataset: minimum, maksimum, median, dan dua kuartil.

Nilai minimum dan maksimum dataset mudah ditemukan, tetapi bagaimana dengan persentil tersebut?

Mudah. Misalkan Anda memiliki 25 entri, diurutkan dari kecil ke besar, dalam dataset Anda:

  • Persentil ke-25 atau kuartil pertama dihitung dengan mengalikan 0,25 dengan 25. Angka yang dihasilkan, 6,25 atau 7 jika dibulatkan ke atas, memberi indikasi entri mana yang merupakan persentil ke-25: entri ke-7 dalam list terurut Anda.
  • Kuartil ketiga atau persentil ke-75 dihitung dengan mengalikan 0,75 dengan 25. Angka yang dihasilkan, 18,75, menjadi 19 jika dibulatkan ke atas, menunjukkan bahwa entri ke-19 dalam list terurut Anda adalah persentil ketiga.
  • Median dataset dihitung dengan mengalikan 0,5 dengan 25. Angka ke-13 akan menjadi median karena 12,5 dibulatkan ke atas.

Tapi bagaimana Anda memprogram ini untuk list Anda?

Cara termudah adalah dengan menggunakan NumPy. Ikuti instruksi dalam latihan interaktif di bawah ini untuk menghitung persentil list Anda:

# Import numpy as np
import ____ as __

# Make a NumPy array
a = np.array([1,2,3,4,5])

# Return the 50th percentile of our NumPy array
p = np.percentile(a, 50)

#Print the result
print(____)

Cara Menjumlahkan List per Elemen (Element-Wise)

Misalkan Anda memiliki dua list:

list1=[1, 2, 3]
list2=[4, 5, 6]

Dan Anda ingin memastikan penjumlahan dilakukan per elemen; Artinya, 1 ditambahkan dengan 4, 2 dengan 5, dan 3 dengan 6. Ada dua cara untuk melakukannya.

Lanjutkan membaca untuk tahu lebih banyak!

… Dengan Python Dasar

Anda dapat menggunakan map dengan operator.add untuk melakukan penjumlahan per elemen:

from operator import add
list(map(add, list1, list2))

Ini akan menghasilkan list [5, 7, 9].

Catatan bahwa Anda perlu menggunakan list() untuk mencetak hasil fungsi map().

Atau Anda dapat menggunakan fungsi zip() dengan list comprehension:

[sum(x) for x in zip(list1, list2)]

… Dengan NumPy

Contoh sebelumnya bekerja dengan baik pada list kecil ini, tetapi saat Anda bekerja dengan data yang sedikit lebih banyak, sebaiknya gunakan numpy agar proses lebih mudah.

Pastikan Anda mengimpor pustaka numpy dan list Anda diubah menjadi array NumPy:

# Import numpy as np
import ____ as __

# Make your lists into NumPy arrays
vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])

# Element-wise addition
sum_vector = vector1 + vector2 

# Print the result
print(____)

Apa Berikutnya dalam Perjalanan Data Science Anda dengan Python?

Anda telah mencapai akhir tutorial interaktif kami tentang list di Python. Cukup banyak materi dan lumayan menguras tenaga, tetapi Anda berhasil!

List hanyalah bagian kecil namun esensial dalam perjalanan data science Anda dengan Python. Masih banyak yang bisa dieksplorasi! Kursus interaktif kami Intro to Python for Data Science sempurna bagi Anda yang ingin belajar lebih banyak tentang Python dan penggunaannya dalam data science: dimulai dari dasar-dasar Python hingga secara bertahap membawa Anda ke tingkat menengah dengan memperkenalkan NumPy. Cocok untuk yang minim pengalaman dalam pemrograman (Python)!

Namun, jika Anda sudah pengguna Python tingkat lanjut, Anda bisa mempertimbangkan untuk melihat kursus Intermediate Python For Data Science kami, dirancang untuk mereka yang siap membawa kemampuan data science dan Python ke tingkat berikutnya. Kursus ini pasti akan membawa Anda lebih jauh dalam pembelajaran data science! Kursus akan memperkenalkan Anda pada lebih banyak pustaka, seperti matplotlib dan pandas, konsep seperti logika, alur kontrol, dan penyaringan, serta menyertakan studi kasus data science untuk memantapkan keterampilan Anda.

Sudah menggunakan Python untuk data science tetapi ingin melangkah lebih jauh? Anda mungkin tertarik dengan kursus Importing Data Into Python kami atau membaca seri tutorial The importance of preprocessing in data science and the machine learning pipeline!

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai