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։
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 զանգված՝ ամեն մեկն առանձին տողի վրա։ Զանգվածի էլեմենտներն առանձնացված են բացատով։ Երաշխավորվում է, որ բոլոր զանգվածներն ունեն նույն քանակի էլեմենտներ։
Ծրագիրը պետք է տպի նոր զանգված, որը պարունակի նույն ինդեքսներում զանգվածների էլեմենտների արտադրյալը