Python-ում ցուցակներ ստեղծելը շատ հեշտ է։ Կարելի է օգտագործել [0] * 50՝ 0-ներով լցված 50 տարրերից բաղկացած ցուցակ ստեղծելու համար: Կա մեկ այլ եղանակ, որի միջոցով ավելի լավ կարող ենք կառավարել ամեն էլեմենտի արժեքը․ դա for-ի միջոցով իտերացիան է և տարրերը մեկ առ մեկ ավելացնելը: Սակայն կարող ենք օգտվել ևս մեկ տարբերակից, որ կոչվում է list comprehension: Եթե ցանկանում ենք ստեղծել քառակուսիների ցուցակ 1...100 թվերի համար, կարող ենք դա անել հետևյալ կերպ.
squares = []
for n in range(1, 100):
squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Այս երկու ծրագրերը կտպեն նույն արդյունքը և կստեղծեն քառակուսիների նույն ցուցակը. [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801]։
Այսպիսով, list comprehension-ի գրելաձևը.
Սկսվում է բացվող փակագծով [ և վերջանում փակողով՝ ]
for ցիկլն անցնում է արժեքների վրայով
Ցուցակի տարրերը գրվում են for բառից առաջ և կարող են ընդունել տարբեր արժեքներ՝ կախված for ցիկլի փոփոխականից (այս օրինակում՝ թվի քառակուսին):
Ենթադրենք՝ ծննդյան օրվա հրավերներ ուղարկելու համար դուք կազմել եք այն մարդկանց ցուցակը, ում կցանկանայինք հրավիրել, բայց բոլոր անունները պատահաբար փոքրատառ են գրվել։ Մենք կարող ենք կիրառել list comprehension-ը՝ դա շտկելու համար.
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = []
for name in invites:
fixed.append(name.title())
print(fixed)
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Այս երկու ծրագրերն էլ տպելու են` ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas']։
Առաջադրանք
Տրված են n անուններ ու ազգանուններ։ Ձեզ խնդրում են առանձնացնել անունները և տպել թե՛ սկզբնական ցուցակը, թե՛ միայն անունները:
Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ՝ n-ը: Հաջորդ n տողերը պարունակում են անուն ազգանուն զույգեր:
Ծրագիրը պետք է նախ տպի սկզբնական ցուցակը, իսկ հետո միայն անուններով ցանկը:
Մուտք
Ելք
3
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall
Peter
Curtis
Հուշում
Դուք կարող եք օգտագործել .split()[0], որպեսզի տողը բացատով բաժանելուց հետո ստանաք առաջին տարրը:
Կարող եք կիրառել նաև list comprehension-ը:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]