Python-ի ներածություն

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: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

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