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, եթե նա հանձնել է քննությունը: