Ցուցակները և zip ֆունկցիան

Python–ի ամենամեծ առավելություններից մեկն այն է, որ տրամադրում է մեծ թվով գործիքներ Python-ում եղած տիպերի հետ աշխատելու համար։ Մի քանի ցուցակի հետ աշխատելիս հաճախ անհրաժեշտ է լինում միանգամից մի քանիսի վրայով անցնել և ինչ-որ գործողություն կատարել այդ ցուցակներում գտնվող արժեքների հետ։ Մի քանի ցուցակի վրայով միաժամանակ անցնելու համար կարելի է օգտագործել zip ֆունկցիան.
heights = [180, 190, 178]
weights = [89, 92, 77]

for i in range(len(heights)):
    h, w = heights[i], weights[i]
    print(h, '=>', w)
heights = [180, 190, 178]
weights = [89, 92, 77]

for h, w in zip(heights, weights):
    print(h, '=>', w)
zip ֆունկցիան մի քանի ցուցակներից ստեղծում է tuple-ների ցուցակ։ Այն կարող է կամայական քանակի ցուցակներ ընդունել որպես պարամետր, որի միջոցով մենք կարող ենք ունենալ zip(list1, list2, list3, ..., listn)-ի նման արտահայտություններ։ Այստեղ ծրագիրը կստեղծի tuple-ներ, որոնք պարունակում են n թվով էլեմենտներ, եթե zip-ին փոխանցվել է n թվով ցուցակ։
Հաշվի առեք, որ zip-ն աշխատում է մինչև ամենակարճ ցուցակը։ Այսպիսով, եթե մենք zip-ին փոխանցենք երկու ցուցակ, որտեղ մեկը մյուսից կարճ է, երկար ցուցակի վերջին մի քանի էլեմենտները կանտեսվեն։
Եթե ցանկանում ենք թույլ չտալ, որ ավելի երկար ցուցակից էլեմենտներ դուրս մնան, կարող ենք անել դա strict=True արգումենտի միջոցով։ Եթե սխալ չափի ցուցակներ փոխանցված լինեն, Python-ը կասի, որ մենք ունենք ValueError։
notion image
heights = [180, 190]
names = ['Bob', 'Liza', 'Anna']

for h, name in zip(heights, names, strict=True):
    print(name, '=>', h)
# ValueError: zip() argument 2 is longer than argument 1

Առաջադրանք

Մուտքում տրված է 3 ցուցակ՝ ամեն մեկն առանձին տողի վրա։ Ցուցակի էլեմենտներն առանձնացված են բացատով։ Հայտնի է, որ բոլոր ցուցակներն ունեն նույն քանակի էլեմենտներ։
Ծրագիրը պետք է տպի նոր ցուցակ, որը պարունակի նույն ինդեքսներում ցուցակների էլեմենտների արտադրյալը։
Մուտք
Ելք
1 2 3 4 5 6 1 1 1
4 10 18
 

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