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

  • set

    Պատկերացրեք, որ շատ հաճախորդներ ունեք աշխարհի տարբեր քաղաքներից: Դուք հետևում եք նրանց քաղաքներին և ունեք քաղաքների ցուցակ, որտեղից գալիս են ձեր հաճախորդները: Այդ ցանկը կարող է լինել այսպիսին՝ ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', ...].
    Դուք նկատել եք, որ կան որոշ հաճախորդներ նույն քաղաքից՝ օրինակ New York-ից: Կցանկանայիք իմանալ, թե որոնք են այն քաղաքները, որոնցից հաճախորդներ ունեք առանց կրկնությունների:
    Սա հեշտ է անել Python-ի set-ով.
    cities = ['San Francisco', 'New York', 'Yerevan', 'New York', 'Tel Aviv', 
    					'San Diego', 'San Francisco', 'Yerevan']
    uniques = set(cities)
    print(uniques)
    # {'San Diego', 'Yerevan', 'San Francisco', 'New York', 'Tel Aviv'}
    
    print(len(cities))     # 8
    print(len(uniques))    # 5
    set-ը չկարգավորված հավաքածու է՝ առանց կրկնվող տարրերի: Այն օգնում է հետևել տարրերի առկայությանը և չունի հատուկ կարգ կամ հերթականություն: set-ը կարող ենք դիտարկել, որպես զանգվածի կամ tuple-ի նման տարրերի հավաքածու է, բայց առանց կարգի, որտեղ երաշխավորում է, որ տարրերի չեն կրկնվում:
     
    Մենք կարող ենք ստուգել՝ արդյոք տարրը set-ի մեջ է in օպերատորով.
    print('San Francisco' in uniques)   # True
    print('Tel Aviv' in uniques)        # True
    print('London' in uniques)          # False
    print('Amsterdam' in uniques)       # False
    print(3 in uniques)                 # False
    Շատ ավելի արագ է ստուգել, թե արդյոք որոշակի տարր առկա է set-ում, համեմատած այն զանգվածում ստուգելու հետ: Սա պայմանավորված է set-ի տվյալների կառուցվածքով: Զանգվածների համար Python-ը պետք է մեկ առ մեկ համեմատի տարրերը ցուցակի առաջին տարրից մինչև վերջինը և վերադարձնի True, եթե այն առկա էր, իսկ հակառակ դեպքում՝ False: Այսպիսով, այն անցնում է ամբողջ ցուցակի վրայով մեկ առ մեկ՝ ստուգումը կատարելու համար: set-ի կառուցվածքը թույլ է տալիս այս ստուգումը կատարել ավելի քիչ գործողություններով:

    Առաջադրանք

    Դուք օգնում եք մթերային խանութին կառավարել իր գույքագրումը: Յուրաքանչյուր ապրանքի համար նրանք գրել են այդ ապրանքը մատակարարող ընկերության անվանումը։ Նրանք կցանկանային հաղորդագրություն ուղարկել այդ ընկերություններին` ասելով, թե իրենց ապրանքներից որքան անհրաժեշտ կլինի առաջիկա մեկ ամսվա ընթացքում: Որոշ ընկերություններ մատակարարում են մի քանի ապրանք, ուստի խանութը չի ցանկանա մի քանի հաղորդագրություն ուղարկել նույն խանութին ամեն ապրանքի համար: Փոխարենը, նրանք կցանկանային ստանալ այն ընկերությունների ցանկը, որոնց հետ նրանք աշխատում են, որպեսզի հետո հաղորդագրություն ուղարկեն իրենց: Նրանք ձեզ խնդրում են գրել ծրագիր՝ տպելու բոլոր ընկերությունները, որոնց հետ նրանք համագործակցում են:
    Մուտքի առաջին տողը պարունակում է մեկ ամբողջ թիվ n - ապրանքների քանակը: Հաջորդ n տողերը պարունակում են յուրաքանչյուր ապրանքի համար ընկերության անվանումը:
    Ծրագիրը պետք է տպի ընկերությունների չկրկնվող անունները, որոնց հետ համագործակցում է խանութը, յուրաքանչյուրը առանձին տողում:
    Մուտք
    Ելք
    5 Nestle Mars Nestle Coca Cola Nestle
    Nestle Mars Coca Cola
     
    To check your solution you need to sign in
    Sign in to continue