A listák feldolgozására nagyon hasznosak tudnak lenni a magasabbrendű függvények (ld. map, filter és társaik), de az így alkotott kifejezések könnyen olyan bonyolulttá válhatnak, hogy már túlzottan magas szintű absztrakcióra van szükség a megértésükhöz. A for-comprehensionökkel ugyanazokat a szekvenciális adatszerkezeteken végzett műveleteket lehet megoldani kényelmesebb jelölés mellett. Első látásra ezek a kifejezések a halmazkifejezéseknek, relációs adatbázis lekérdezéseknek és a for ciklusoknak az egyvelege, nem véletlenül.
Tegyük fel, hogy van egy persons típusú elemekből álló sorozatunk, ahol a persons-nak van name és age adattagja. A sorozat lehet egy tömb, egy lista, egy iterátor, vagy egyéb szekvenciális adatszerkezet. Ahhoz hogy meghatározzuk az összes 20 évnél idősebb ember nevét írhatjuk a következőt:
Ez a következővel ekvivalens:
Egy for-comprehension alakja a következő:
Itt s generátoroknak, értékadásoknak és szűrőknek a sorozata. A sorozat egy generátorral kell kezdődjön. Ha több generátor van, akkor a későbbiek értékei előbb iterálódnak.
Lássuk, hogyan feleltethetőek meg az egyes for-comprehensionök a listán alkalmazott magasabbrendű függvényekkel alktotott kifejezésekkel.
Legyen adott az n pozitív egész szám. Keressük meg az összes pozitív egész i, j párokat,ahol 1 <= j < i <= n, úgy hogy i + j prím:
Ezek után a for ciklusokkal való hasonlóságot is érdemes megfigyelni, illetve kihasználni, ugyanis van a for-comprehensionöknek egy külön változata ami a for ciklusok kifejezésére szolgál:
1 to 10
jelölés nem más mint a Range(1,10)
kifejezésre egy szintaktikai cukorka.
A for-comprehension-ök ugyanakkor nagyon hasonlítanak az adatbázis lekérdező nyelvek szokásos műveleteihez. Tekintsük könyveknek egy sorozatát:
Keressük meg azokat a könyveket, amelyeknek a szerzője az Ullman vezetéknevet viseli:
Vagy azok a könyvek, melyek címében szerepel a Program szó:
Azok az emberek, akik legalább két könyvet írtak:
Az utolsó példában egy szerző a végeredményben többször is szerepelhet. Ez korrigálható: