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. Սկսվում է բացվող փակագծով [ և վերջանում փակողով՝ ]
  1. for ցիկլն անցնում է արժեքների վրայով
  1. Զանգվածի տարրերը գրվում են 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