fb pixel

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

  • Profound Academy

    • Status
      • 1
        Մուտք և Ելք
      • 2
        Փոփոխականներ և ամբողջ թվեր
      • 3
        Պայմաններ
      • 4
        Ներդրված պայմաններ
      • 5
        Փոփոխականներ և տիպեր
      • 6
        Տողեր
      • 7
        Զանգվածներ
      • 8
        For ցիկլեր
      • 9
        While ցիկլեր
      • 10
        continue, break, while...else
      • 11
        Տողերի և զանգվածների հետ աշխատանք
      • 12
        Ներդրված ցիկլեր
      • 13
        List Comprehension
      • 14
        Tuple-ներ և Set-եր
      • 15
        dict
      • 16
        Ֆունկցիաներ
      • 17
        Ֆունկցիաներ 2
      • 18
        Lambda and higher-order functions
      • 19
        Files

  • Higher-Order ֆունկցիաներ

    Ֆունկցիան կոչվում է Higher-Order, եթե այն պարունակում է այլ ֆունկցիաներ որպես արգումենտ կամ վերադարձնում է մեկ այլ ֆունկցիա։ Մենք կարող ենք ֆունկցիաներ փոխանցել որպես արգումենտ, կարող ենք նաև ֆունկցիաներ վերադարձնել։ Այս ամենը շատ հարմար է դարձնում կոդ գրելը, որը կարող է օգտագործվել բազմաթիվ վայրերում:
    sort() կամ sorted() ֆունկցիան, օրինակ, higher-order ֆունկցիա է: Մենք կարող ենք դրան փոխանցել key կոչվող արգումենտ, որը կօգտագործվի որոշելու համար, թե ինչպես է կատարվում տեսակավորումը: Մենք կարող ենք ունենալ tuple-ի զանգված և կցանկանայինք տեսակավորել այն՝ հիմնվելով tuple-ի տարրերի գումարի վրա.
    items = [(3, 6), (1, 8), (4, 4), (6, 1)]
    items.sort(key=lambda x: x[0] + x[1])
    print(items)
    # [(6, 1), (4, 4), (3, 6), (1, 8)]
    Այստեղ մենք փոխանցել ենք lambda ֆունկցիա, որն ընդունում է մեկ տարր որպես արգումենտ և վերադարձնում է այն արժեքը, ըստ որի այն պետք է տեսակավորվի:
    Մենք կարող ենք նաև սահմանել մեր սեփական higher-order ֆունկցիան.
    def do(num1, num2, operation):
    	res = operation(num1, num2)
    	print(num1, num2, res)
    
    do(2, 3, lambda x, y: x + y)    # 2 3 5
    do(2, 3, lambda x, y: x - y)    # 2 3 -1
    do(2, 3, lambda x, y: x * y)    # 2 3 6
    do() ֆունկցիան ունի 3 արգումենտ՝ առաջին թիվը num1, երկրորդ թիվը num2 և ֆունկցիան, որը պետք է կատարվի այդ թվերի վրա։ Առաջին կանչում ֆունկցիային ասում ենք, որ օգտագործի գումարում, երկրորդում հանում, իսկ վերջնականում բազմապատկում:

    Առաջադրանք

    Տրված է թվերի n եռյակների ցանկը, ձեզ խնդրում են դասավորել այդ եռյակները ըստ իրենց գումարի: Այսպիսով, վերջնական ցուցակում, եթե նայենք եռյակների գումարին, պետք է ստացվի չնվազող հաջորդականություն։
    Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ n - եռյակների թիվը: Հաջորդ n տողերը պարունակում են 3 բացատով բաժանված ամբողջ թվեր։
    Ծրագիրը պետք է տպի n տող՝ ստացված եռյակների ցանկը: Յուրաքանչյուր տող պետք է պարունակի 3 բացատով բաժանված թիվ: Եթե կան նույն գումարով երկու եռյակ, ապա մուտքագրման մեջ հայտնված առաջինը պետք է առաջինը հայտնվի ելքում (sort և sorted ֆունկցիաները պահպանում են այդ հերթականությունը. սա կոչվում է կայուն տեսակավորում կամ stable sorting):
    Մուտք
    Ելք
    3 10 4 0 12 1 1 6 7 8
    10 4 0 12 1 1 6 7 8
     
    To check your solution you need to sign in
    Sign in to continue