Belajar dengan membaca secara berurutan

Pemeriksaan Massal dengan all() dan any()

Pahami fungsi bawaan all() dan any() di Python untuk pemeriksaan massal pada koleksi.

all() — True hanya ketika setiap elemen True

all(iterable) mengembalikan True ketika setiap elemen dari list, tuple, atau set yang kamu teruskan bernilai True (atau dievaluasi sebagai truthy), dan False jika ada satu pun elemen yang False.

Bagaimana all() memutuskan
[T, T, T]all()True[T, F, T]all()False[ ] (kosong)all()True

True jika setiap elemen True. False jika ada elemen yang False. True ketika diberi iterable kosong.

Aturan truthiness dari artikel sebelumnya tetap berlaku: 0, string kosong, dan list kosong diperlakukan sebagai False, jadi list angka yang berisi 0 membuat all() mengembalikan False.

# List bool: False jika ada elemen yang False
print(all([True, True, True]))    # True
print(all([True, False, True]))   # False

# List angka: False jika ada 0 di dalamnya
print(all([1, 2, 3]))             # True
print(all([1, 0, 3]))             # False

# Apakah semua kolom form yang wajib sudah diisi?
form_values = ["Budi", "budi@example.com", "Jl. Sudirman No. 1, Jakarta"]
if all(form_values):
    print("Siap dikirim")
else:
    print("Beberapa kolom kosong")
# Output: Siap dikirim

Cek apakah setiap item di keranjang belanja tersedia stok-nya.

① Definisikan in_stock = [True, True, True, False].

② Cetak hasil all(in_stock).

③ Dengan if all(in_stock):, cetak "Lanjut ke checkout" ketika semua tersedia, selainnya "Beberapa item habis".

(Penjelasan akan muncul setelah kamu menjalankan kode dengan benar.)

Python Editor

Jalankan kode untuk melihat output

any() — True jika setidaknya satu elemen True

any(iterable) mengembalikan True jika setidaknya satu elemen True, dan False hanya ketika setiap elemen False. Di mana all() adalah pemeriksaan ketat yang menuntut lulus suara bulat, any() adalah pemeriksaan longgar yang puas dengan satu kecocokan.

FungsiMengembalikan True ketikaMengembalikan False ketikaPada list kosong
all()Setiap elemen TrueSetidaknya satu elemen FalseTrue
any()Setidaknya satu elemen TrueSetiap elemen FalseFalse
# List bool: True jika setidaknya satu True
print(any([False, False, True]))   # True
print(any([False, False, False]))  # False

# Coba ulang jika setidaknya satu flag error muncul
error_flags = [False, False, True, False]
if any(error_flags):
    print("Perlu coba ulang")
else:
    print("Semua sukses")
# Output: Perlu coba ulang

Cek apakah setidaknya satu responden survei mengatakan ingin hadir.

① Definisikan want_to_join = [False, False, False, True, False].

② Cetak hasil any(want_to_join).

③ Dengan if any(want_to_join):, cetak "Adakan acara" ketika ada setidaknya satu yang setuju, selainnya "Batalkan".

Python Editor

Jalankan kode untuk melihat output

Perilaku ketika diberi koleksi kosong

Ketika kamu meneruskan list kosong, all([]) mengembalikan True dan any([]) mengembalikan False. Ini berlawanan dengan intuisi, jadi hati-hati ketika data sah-sah saja punya nol elemen.

Perilaku pada koleksi kosong
[ ] (kosong)all()True[ ] (kosong)any()False
print(all([]))   # True  <- tidak ada "yang False" untuk ditemukan, jadi True
print(any([]))   # False <- tidak ada "yang True" untuk ditemukan, jadi False

# Contoh: keranjang yang belum punya item terdaftar
cart = []
if all(cart):
    print("Semua item dicek")   # berjalan walaupun keranjang berisi 0 item
# Ini mungkin tidak sesuai maksudmu, jadi cek kosong dulu

Putuskan dulu cara menangani list kosong

Ketika kamu memakai all() dengan semangat "jika setiap anggota memenuhi kondisi…", 0 anggota tetap mengembalikan True. Untuk mencegah lulus dini yang tidak diinginkan, cek dulu bahwa list-nya tidak kosong, seperti if members and all(...):.

Konfirmasi sendiri perilaku list kosong.

① Definisikan empty = [].

② Cetak hasil all(empty) dan any(empty).

③ Pakai if empty and all(empty): untuk mencetak "Semua item OK" hanya ketika list tidak kosong dan semua True (verifikasi tidak ada yang dicetak untuk list kosong).

Python Editor

Jalankan kode untuk melihat output

Gabungkan dengan kondisi untuk pemeriksaan massal

all() / any() benar-benar bersinar **ketika digabungkan dengan ekspresi perbandingan. Untuk mengecek "apakah semua berusia 18 atau lebih?", buat list hasil >= 18` dari usia dan teruskan — seluruh pemeriksaan muat dalam satu baris.

ages = [19, 20, 18, 25, 57]

# Buat dulu list bool, lalu teruskan ke all (versi 2 langkah yang lebih mudah)
checks = [age >= 18 for age in ages]
print(checks)         # [True, True, True, True, True]
print(all(checks))    # True

# Atau tulis inline (list comprehension / generator expression — dibahas berikutnya)
print(all(age >= 18 for age in ages))   # True
print(any(age >= 65 for age in ages))   # False

Kita akan membahas list comprehension seperti [age >= 18 for age in ages] secara detail di bab for. Untuk sekarang, cukup rasakan bahwa "kamu bisa mengevaluasi sebuah kondisi di seluruh list dan langsung meneruskan hasilnya ke all() / any()".

Pakai list skor tes untuk membuat penilaian gaya lulus/tidak lulus.

① Definisikan scores = [78, 82, 65, 91, 55].

② Tentukan apakah semua orang mendapat skor 60 atau lebih (memakai all) dan apakah setidaknya satu orang mendapat 90 atau lebih (memakai any), lalu tetapkan ke all_pass dan has_genius.

③ Cetak kedua hasilnya.

Python Editor

Jalankan kode untuk melihat output

Di artikel ini, kita belajar all() dan any() untuk memeriksa isi list atau tuple secara massal.

all() mensyaratkan semua lulus, any() puas dengan setidaknya satu, dan pada input kosong all adalah True sementara any adalah False. Di artikel berikutnya, kita akan menggali lebih dalam loop for itu sendiri — mesin di balik ekspresi [... for ... in ...] yang muncul diam-diam di sini sebagai "list hasil".

QUIZ

Cek Pemahaman

Jawab setiap pertanyaan satu per satu.

Soal 1Apa yang dicetak kode ini?
print(all([1, 2, 0, 3]))

Soal 2Apa yang dicetak kode ini?
print(any([False, False, False]))

Soal 3Ketika diteruskan list kosong [], kombinasi nilai kembalian dari all([]) dan any([]) mana yang benar?