List comprehension

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-ի գրելաձևը.

  1. Սկսվում է բացվող փակագծով [ և վերջանում փակողով՝ ]

  2. for ցիկլն անցնում է արժեքների վրայով

  3. Ցուցակի տարրերը գրվում են 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]

hi
my
name
is

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue