List comprehension-ը հիանալի կիրառություններ ունի, բայց Python-ում կա շատ հարմար ևս մեկ սինտաքս, որը թույլ է տալիս մեկ տողով աշխատել if-else պայմանների հետ: Ենթադրենք՝ ցանկանում եք նշել Excellent(Գերազանց), եթե միավորը մեծ կամ հավասար է 50-ի, և Average(Միջին), եթե այն 50-ից ցածր է: Դա կարելի է անել մեկ տողով.
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
Մեկ տողով պայմանները հատկապես օգտակար են list comprehension-ում: Դրանք կարող են կիրառվել պայմանականորեն՝ զանգվածի տարրեր ստեղծելու համար. մի պայմանի դեպքում կունենան մեկ արժեք, իսկ մեկ այլ պայմանի դեպքում՝ այլ արժեք։ Վերը նշված ծրագիրը (միավորների վերաբերյալ) կարող ենք իրականացել նաև list comprehension-ի մեջ.
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
results-ի յուրաքանչյուր տարր կլինի կամ Excellent(Գերազանց), կամ Average(Միջին)՝ կախված s-ի արժեքից:
Նկատի ունեցեք, որ սա տարբերվում է list comprehension-ի զտումից: Զտման համար if պայմանը հայտնվում է for ցիլկից հետո: Այստեղ if և else պայմանները հայտնվում են գեներացված տարրի մասում (սկզբում)։
Առաջադրանք
Մեկ տողով տրված են քննության միավորները։ Ձեզ խնդրում են պարզել՝ արդյո՞ք ուսանողը ձախողել է քննությունը, թե՞ հաջողությամբ հանձնել է այն: Բոլոր միավորները բաժանված են բացատով: Ուսանողները չեն անցնում քննությունը, եթե ստացել են 40-ից պակաս միավոր, իսկ հակառակ դեպքում՝ անցնում են։
Մուտքը պարունակում է միավորների մեկ տող, որոնք բաժանված են բացատով:
Ծրագիրը պետք է տպի մեկ տող, որտեղ յուրաքանչյուր ուսանողի համար պետք է տպվի FAIL, եթե ուսանողը ձախողել է, և PASS, եթե նա հանձնել է քննությունը: