SlideShare a Scribd company logo
1 of 19
Жиынтықтар.
Жиынтықтар
Python тіліндегі жиынтықтар – математикадағы
жиынықтарға теңестірілген деректер құрылымы болып
табылады. Жиынтықтар әртүрлі элементтерден тұруы мүмкін,
жиынтықтағы элементтердің реті анықталмаған. Жиынтыққа
элементтерді қосуға және жоюға болады, жиынтық
элементтерің сұрыптауға болады, жиынтыққа операциялар
қолдануға (бірлестік, қиылысу, айыру). Топтағы элементтің
мүшелігін тексеруге болады.
Элементтер тізім ретінде сақталатын массивтерге
қарағанда, эиымдарда элементтердің сақталу тәртібі
көрсетілмейді (сонымен қоса жиынтық элементтері тізімдегідей
қатар емес, күрделі алгоритмдердің көмегімен сақталынады).
Жиын элементтері кез-келген өзгермейтін деректер түрі
болуы мүмкін: сандар, жолдар және жолақтар. Өзгерілетін
деректер түрлері жиынтық элементтері бола алмайды, атап
айтқанда, тізімнен жиынтық элементі жасалынбайды, (бірақ сіз
кортеж жасауыңызға болады) немесе басқа жиынтық.
Жиынтықты беру
Жиынтық - барлық элементтерін ирек жақшада жазылу
арқылы көрсетіледі. Ерекшелік ретінде бос жиын болып
табылады, ол set() функциясы арқылы жазылады. Егер set()
функциясын тізім, жол немесе кортеж параметр ретінде берілсе,
онда ол тізім, жол, кортеж элементтерінен тұратын жиынтықты
қайтарады. Мысалы:
A = {1, 2, 3}
A = set('qwerty')
print(A)
Әрбір элемент жиынтыққа тек бір рет қана қосылуы
мүмкін, берілген элементтер реті маңызды емес. Мысалы,
программа:
A = {1, 2, 3}
B = {3, 2, 3, 1}
print(A == B)
Нәтижесі:
{'e', 'w', 'y', 't', 'q', 'r'}
Нәтижесі:
True
Жиынтық элементтерімен жұмыс
Len функциясы көмегімен жиынтықтағы элементтер санын
білуге болады.
Жиынтықтын барлық элементтерін (анықталмаған
тәртіппен!) for циклі арқылы іріктеуге болады:
primes = {7, 3, 11, 2, 5}
for num in primes:
print(num)
Элемент жиынтықтын ішіне жататының тексеру үшін,
мәнін түрін bool қайтаратын, in операциясын қолдана аламыз.
Сол сияқты, қарама-қарсы not in операция бар. Жиынтыққа
элемент қосу үшін add әдісі қолданылады:
A = {1, 2, 3}
print(1 in A, 4 not in A)
A.add(4)
print(A)
Нәтижесі:
2
3
5
7
11
Нәтижесі:
True True
{1, 2, 3, 4}
Жиынтық элементтерімен жұмыс
Жинақтан x элементті жоюдың екі әдісі бар: discard және
remove. Олардың тәртіптері, тек жойылатын элемент
жиынтықта болмаған жағдайда ғана ерекшеленеді. Бұл
жағдайда discard әдісі ештеңе жасамайды, ал remove әдісі
KeyError ерекшелігін шығарылады.
Pop әдісі жиынтықтан бір кездейсоқ элементті жойып және
оның мәнін қайтарады. Жиын бос болса, KeyError ерекшелігі
шығарылады.
List функция көммегімен, жиынтықтан тізімді жасауға
болады.
Жиынтықтарғаорындалатыноперациялар
Питонда жиынтықтарға математикадағыдай қарапайым
операцияларды орындауға болады.
A | B
A.union(B)
A және B жиынтықтардың бірлескен
жиынтығын қайтарады.
A |= B
A.update(B)
В жиынтықтын барлық элементтерін А
жиынтығына қосады.
A & B
A.intersection(B)
А және В жиынтықтар қиылысуы болатын
жиынтықтарды қайтарады.
A &= B
A.intersection_update(B)
А жиынтықта тек В жиынтықтағы бар
элементтерді қалдырады.
A - B
A.difference(B)
А және В жиынтықтардың айырымын (А-
да бар, бірақ В-да жоқ элементтер)
қалдырады.
A -= B
A.difference_update(B)
А жиынтықтан В-да бар барлық
элементтерді жояды.
Жиынтықтарғаорындалатыноперациялар
A ^ B
A.symmetric_diffe
rence(B)
А және В жиынтықтардың симметриялы
айырымын қайтарады (А немесе В-ға
жататын, бірақ қатарынан екеуіне
жатпайтын элементтер).
A ^= B
A.symmetric_diffe
rence_update(B)
А жиынтыққа А және В жиынтықтардың
симметриялы айырымын жазады.
A <= B
A.issubset(B)
А жиынтығы В-нің ішкі жиынтығы
болғанда true мәнің қайтарады.
A >= B
A.issuperset(B)
В жиынтығы А-нің ішкі жиынтығы
болғанда true мәнің қайтарады.
A < B A <= B and A != B эквивалентті
A > B A >= B and A != B эквивалентті
Сөздіктер.
Сөздіктер
Тұрақты тізімдер (массивтер) - нөмірленген элементтер
жиынтығынан тұрады, яғни тізімнің кез келген элементіне
сілтеме жасау үшін оның нөмірін көрсету қажет. Тізімдегі
элементтің нөмірін элементтін өзі анықтайды. Бірақ деректерді
сандық нөмірлер бойынша анықтау әрдайым ыңғайлы емес.
Мысалы, Ресейдегі поездар маршруттары сандық-әріптік
кодпен (сан және бір әріп), авиарейстер сандық-әріптік кодпен
анықталады, яғни, поездардың немесе ұшақ ұшуларының
ақпаратын сақтауға арналған сәйкестендіргіш ретінде мәтіндік
жолды қолдану ыңғайлы болар еді.
Оның элементтерін сандық көрсеткішпен емес, еркін түрде
анықтауға мүмкіндік беретін деректер құрылымы сөздік немесе
ассоциативті массив деп аталады. Python-да деректер
құрылымы dict деп аталады.
Мысалы: Capitals сөздікті құрылады, мұнда индекс ретінде
ел болады, ал оның мәні ретінде осы елдін астанасы болады.
Сөздіктер. Мысал:
# Capitals бос сөздігін құрастыру
Capitals = dict()
# Оны бірнеше мәндермен толтыру
Capitals[‘Kazakhstan'] = ‘Astana'
Capitals['Ukraine'] = 'Kiev'
Capitals['Russia'] = 'Moscow'
Countries = ['Kazakhstan', 'France', 'USA', 'Russia']
for country in Countries:
# тізімдегі әр ел үшін Capitals сөздігіне бар болғанына
тексеру
if country in Capitals:
print(country+' елдін астанасы: '+Capitals[country])
else:
print('Базада '+country+' атты ел жоқ')
Нәтижесі:
Kazakhstan елдін астанасы: Astana
Базада France атты ел жоқ
Ukraine елдін астанасы: Kiev
Russia елдін астанасы: Moscow
Сөздіктер
Сонымен, сөздіктін әр элементі екі объекттен тұрады: кілті
және мәні. Жоғарыда көрсетілген мысалда кілт ретінде ел аты,
ал мәні ретінде астанасы болады. Кілт сөздік элементін
тексереді, ал деректер осы кілтке сәйкес келетін мән. Кілттер
міндері бірегей болады, сөздікте бірдей екі кілт бола алмайды.
Ассоциативті массивтің тән ерекшелігі оның
қозғалмалылығы болып табылады: оған еркін кілттермен жаңа
элементтерді қосуға және бұрыннан бар элементтерді жоюға
болады. Сонымен қоса қолданылатын жадтың өлшемі
ассоциативті массив өлшеміне пропорционалды.
Python тіліндегі кілт ретінде өзгермейтін деректер түрі
болуы мүмкін: бүтін және нақты сандар, жолдар және
кортеждер. Сөздікдегі кілт ретінде жиынтық бола алмайды,
бірақ frozenset атты элементі болуы мүмкін: құрудан кейін
өзгертуге мүмкіндігі жоқ set типті арнайы деректер түрі.
Сөздіктерду қолдану уақыттары
Сөздіктерді келесі жағдайларда қолдану керек:
1) Кейбір объектілердің санын есептеу. Бұл жағдайда, кілт
ретінде объект болған сөздікті құру керек, ал мәндері - олардың
саны.
2) Объектпен байланысты кез-келген деректерді сақтау.
Кілттер - объекттер, мәндер олармен байланысты деректер.
Мысалы, егер айдың атауымен оның реттік нөмірін анықтау
қажет болса, оны Num['January']=1; Num['February']=2; ....
сөздігі көмегімен жасауға болады;
3) Объекттер арасында сәйкестікті орнату (мысалы, “ата-
ана—ұрпағы”). Кілт — объект, мән — оған сәйкесінше объект.
4) Егер сізге қарапайым массив қажет болса, бірақ элемент
индексінің ең үлкен мәні өте үлкен және мүмкін индекстердің
барлығы («сирек массив» деп аталатын) пайдаланылмаса, сонда
жадты сақтау үшін ассоциативті массивті пайдалана аласыз.
Сөздікті құру
Бос сөздікті dict() функциясы немесе бос тұрған қос ирек
жақша көмегімен құруға болады. Бастапқы мәндер жинағымен
сөздікті құру үшін, келесі конструкциларды қолдануға болады:
Capitals = {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA':
'Washington'}
Capitals = dict (Russia = 'Moscow', Ukraine = 'Kiev', USA =
'Washington')
Capitals = dict ([("Russia", "Moscow"), ("Ukraine", "Kiev"), ("USA",
"Washington")])
Capitals = dict (zip(["Russia", "Ukraine", "USA"], ["Moscow",
"Kiev", "Washington"]))
print(Capitals)
Нәтижесі:
{'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'}
Сөздікті құру
Алғашқы екі әдіс барлық элементтерді атап өтіп шағын
сөздіктерді жасау үшін пайдаланылуы мүмкін. Сонымен қатар,
екінші әдісінде кілттер dict функциясының аталған
параметрлері ретінде беріледі, сондықтан бұл жағдайда кілттер
тек жолдар типті болуы мүмкін және олар жарамды
идентификаторлар болып табылады. Үшінші және төртінші
жағдайда үлкен сөздіктерді жасауға болады, егер аргументтер
ретінде дайын тізімдерін ұсынса, ол барлық элементтерді
тізімдеу арқылы міндетті түрде алынбауы мүмкін. Үшінші
әдісте dict функциясына әр элемент екі элементтен (кілт және
мәні) тұратын кортеж болатын тізімді беру керек: кілт және
мән. Төртінші әдісінде ұзындықтары бірдей екі тізім (кілттер
тізімі және мәндер тізімі) берілетін zip функциясы
қолданылады.
Сөздік элементтерімен жұмыс
Негізгі операция: элемент мәнін кілтпен алу, жазылуы
тізімдерге ұқсас: A[key]. Егер сөздікте кілттпен құрылған
элемент болмаса, KeyError шығарылады.
Кілтпен мәнді анықтаудың тағы бір әдісі - get:A.get(key).
Егер get кілтімен элемент сөздікте болмаса, онда None мәні
қайтарылады. Екі аргументті A.get(key, val) жазбада, егер key
кілтті элемент сөздікте жоқ болса, онда әдіс val мәнін
қайтарады.
Элементтің сөздікке жататындығын тексеру үшін,
жиынтықтарда сияқты in және not in операциялар көмегімен
орындауға болады.
Сөздікке жаңа элементті енгізу үшін, оған бір мәнді
меншіктеуге болады: A[key] = value.
Элементті сөздіктен жою үшін, del A[key] операциясын
қолдануға болады (егер сөздік сөздікте мұндай кілт жоқ болса,
онда операция KeyError жағдайын шығарады).
Сөздік элементтерімен жұмыс
Элементті сөздіктен жоюдың екі әдісі:
A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'}
key = 'ab'
if key in A:
del A[key]
try:
del A[key]
except KeyError:
print('There is no element with key "' + key + '" in dict')
print(A)
Бірінші жағдайда элементтін бар болуына алдын ала
тексеріс жасаймыз. Ал екінші жағдайда алып тастауды ұстап
алу және өңдеу.
Нәтижесі:
{'aa': 'aa', 'bb': 'bb', 'ba': 'ab'}
1
әдіс
2
әдіс
Сөздік элементтерімен жұмыс
Элементті сөздіктен жоюдың тағы бір жолы - ол pop:A.pop
(key) әдісін қолдану. Бұл әдіс, егер берілген кілтті элемент
сөздікте болмаса, онда жойылатын элементтін мәні
қайтарылады,. Егер pop әдісіне екінші параметр жіберілсе, онда
сөздікте элемент болмаса, осы параметрдің мәнін қайтарылады.
Бұл сөздіктен элементті қауіпсіз жоюды оңай ұйымдастыруға
мүмкіндік береді: A.pop(key, None).
A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'}
key = 'ab'
if key in A:
A.pop(key)
print(A)
Нәтижесі:
{'aa': 'aa', 'bb': 'bb', 'ba': 'ab'}
Сөздік элементтерін санау
Можно легко организовать перебор ключей всех элементов
в словаре:
Сөздікдегі барлық элементтердің кілттері бойынша санауды
ұйымдастыру:
A = dict(zip('abcdef', list(range(6))))
for key in A:
print(key, A[key])
Келесі әдістер сөздік элементтерінің ұсынуын қайтарады.
Ұсыныстар көп жағдайларды жиынтықтарға ұқсас, бірақ егер
сөздік элементтерінің мәндерін өзгерткенде олар өзгереді. Keys
әдісі барлық элементтердің кілттерінің ұсынысын қайтарады,
values әдісі барлық мәндердің ұсынуын қайтарады және items
әдісі кілттер мен мәндердің барлық жұбының (түймелерінің)
ұсынысын қайтарады.
Нәтижесі:
a 0
b 1
c 2
d 3
e 4
f 5
Сөздік элементтерін санау
A сөздігінде барлық элементер мәндері арасында val мәннің
бар болуын тексеру val in A.values() көмегімен орындауға
болады.
Key айнымалысында элемент кілті болу үшін, ал val
айнымалысында оның мәні болу үшін цикл ұйымдастырылды.
A = dict(zip('abcdef', list(range(6))))
for key, val in A.items():
print(key, val)
Нәтижесі:
a 0
b 1
c 2
d 3
e 4
f 5

More Related Content

Recently uploaded

Recently uploaded (13)

Отбасы және неке Құқықтық актілері. Неке
Отбасы және неке Құқықтық актілері. НекеОтбасы және неке Құқықтық актілері. Неке
Отбасы және неке Құқықтық актілері. Неке
 
Механика бөлімінің "Кинематика" атты тақырыбына трезентация
Механика бөлімінің "Кинематика" атты тақырыбына трезентацияМеханика бөлімінің "Кинематика" атты тақырыбына трезентация
Механика бөлімінің "Кинематика" атты тақырыбына трезентация
 
№6 Дәріс. Тақырыбы: Қатты дене механикасы.pptx
№6 Дәріс. Тақырыбы: Қатты дене механикасы.pptx№6 Дәріс. Тақырыбы: Қатты дене механикасы.pptx
№6 Дәріс. Тақырыбы: Қатты дене механикасы.pptx
 
№10 Дәріс. Тақырыбы: Инерциялық емес санақ жүйелеріндегі қозғалыс (ИЕСЖ)..pptx
№10 Дәріс. Тақырыбы: Инерциялық емес санақ жүйелеріндегі қозғалыс (ИЕСЖ)..pptx№10 Дәріс. Тақырыбы: Инерциялық емес санақ жүйелеріндегі қозғалыс (ИЕСЖ)..pptx
№10 Дәріс. Тақырыбы: Инерциялық емес санақ жүйелеріндегі қозғалыс (ИЕСЖ)..pptx
 
№2 Дәріс. тақырыбы: Қатты дене кинематикасы.
№2 Дәріс. тақырыбы: Қатты дене кинематикасы.№2 Дәріс. тақырыбы: Қатты дене кинематикасы.
№2 Дәріс. тақырыбы: Қатты дене кинематикасы.
 
№8 Дәріс. Тақырыбы: Үйкеліс күші қатысатын қозғалыс..pptx
№8 Дәріс. Тақырыбы: Үйкеліс күші қатысатын қозғалыс..pptx№8 Дәріс. Тақырыбы: Үйкеліс күші қатысатын қозғалыс..pptx
№8 Дәріс. Тақырыбы: Үйкеліс күші қатысатын қозғалыс..pptx
 
№9 Дәріс. Тақырыбы: Бүкіл әлемдік тартылыс заңы..pptx
№9 Дәріс. Тақырыбы: Бүкіл әлемдік тартылыс заңы..pptx№9 Дәріс. Тақырыбы: Бүкіл әлемдік тартылыс заңы..pptx
№9 Дәріс. Тақырыбы: Бүкіл әлемдік тартылыс заңы..pptx
 
№5 Дәріс. Тақырыбы: Материялық нүктелер жүйесінің динамикасы. Сақталу заңдары...
№5 Дәріс. Тақырыбы: Материялық нүктелер жүйесінің динамикасы. Сақталу заңдары...№5 Дәріс. Тақырыбы: Материялық нүктелер жүйесінің динамикасы. Сақталу заңдары...
№5 Дәріс. Тақырыбы: Материялық нүктелер жүйесінің динамикасы. Сақталу заңдары...
 
№3 Дәріс.Тақырыбы: Материялық нүктенің динамикасы.ppt
№3 Дәріс.Тақырыбы: Материялық нүктенің динамикасы.ppt№3 Дәріс.Тақырыбы: Материялық нүктенің динамикасы.ppt
№3 Дәріс.Тақырыбы: Материялық нүктенің динамикасы.ppt
 
№1 Дәріс. Тақырыбы: КинематикаҚозғалыс түрлері.ppt
№1 Дәріс. Тақырыбы: КинематикаҚозғалыс түрлері.ppt№1 Дәріс. Тақырыбы: КинематикаҚозғалыс түрлері.ppt
№1 Дәріс. Тақырыбы: КинематикаҚозғалыс түрлері.ppt
 
Халықтық педагогика туралы презентация.pdf
Халықтық педагогика туралы презентация.pdfХалықтық педагогика туралы презентация.pdf
Халықтық педагогика туралы презентация.pdf
 
№4 Дәріс. Тақырыбы: Материялық нүктенің динамикасы (2).pptx
№4 Дәріс. Тақырыбы: Материялық нүктенің динамикасы (2).pptx№4 Дәріс. Тақырыбы: Материялық нүктенің динамикасы (2).pptx
№4 Дәріс. Тақырыбы: Материялық нүктенің динамикасы (2).pptx
 
№7 Дәріс. Тақырыбы: Серпімділік күштер.pptx
№7 Дәріс. Тақырыбы: Серпімділік күштер.pptx№7 Дәріс. Тақырыбы: Серпімділік күштер.pptx
№7 Дәріс. Тақырыбы: Серпімділік күштер.pptx
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

Жиынтықтар

  • 2. Жиынтықтар Python тіліндегі жиынтықтар – математикадағы жиынықтарға теңестірілген деректер құрылымы болып табылады. Жиынтықтар әртүрлі элементтерден тұруы мүмкін, жиынтықтағы элементтердің реті анықталмаған. Жиынтыққа элементтерді қосуға және жоюға болады, жиынтық элементтерің сұрыптауға болады, жиынтыққа операциялар қолдануға (бірлестік, қиылысу, айыру). Топтағы элементтің мүшелігін тексеруге болады. Элементтер тізім ретінде сақталатын массивтерге қарағанда, эиымдарда элементтердің сақталу тәртібі көрсетілмейді (сонымен қоса жиынтық элементтері тізімдегідей қатар емес, күрделі алгоритмдердің көмегімен сақталынады). Жиын элементтері кез-келген өзгермейтін деректер түрі болуы мүмкін: сандар, жолдар және жолақтар. Өзгерілетін деректер түрлері жиынтық элементтері бола алмайды, атап айтқанда, тізімнен жиынтық элементі жасалынбайды, (бірақ сіз кортеж жасауыңызға болады) немесе басқа жиынтық.
  • 3. Жиынтықты беру Жиынтық - барлық элементтерін ирек жақшада жазылу арқылы көрсетіледі. Ерекшелік ретінде бос жиын болып табылады, ол set() функциясы арқылы жазылады. Егер set() функциясын тізім, жол немесе кортеж параметр ретінде берілсе, онда ол тізім, жол, кортеж элементтерінен тұратын жиынтықты қайтарады. Мысалы: A = {1, 2, 3} A = set('qwerty') print(A) Әрбір элемент жиынтыққа тек бір рет қана қосылуы мүмкін, берілген элементтер реті маңызды емес. Мысалы, программа: A = {1, 2, 3} B = {3, 2, 3, 1} print(A == B) Нәтижесі: {'e', 'w', 'y', 't', 'q', 'r'} Нәтижесі: True
  • 4. Жиынтық элементтерімен жұмыс Len функциясы көмегімен жиынтықтағы элементтер санын білуге болады. Жиынтықтын барлық элементтерін (анықталмаған тәртіппен!) for циклі арқылы іріктеуге болады: primes = {7, 3, 11, 2, 5} for num in primes: print(num) Элемент жиынтықтын ішіне жататының тексеру үшін, мәнін түрін bool қайтаратын, in операциясын қолдана аламыз. Сол сияқты, қарама-қарсы not in операция бар. Жиынтыққа элемент қосу үшін add әдісі қолданылады: A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4) print(A) Нәтижесі: 2 3 5 7 11 Нәтижесі: True True {1, 2, 3, 4}
  • 5. Жиынтық элементтерімен жұмыс Жинақтан x элементті жоюдың екі әдісі бар: discard және remove. Олардың тәртіптері, тек жойылатын элемент жиынтықта болмаған жағдайда ғана ерекшеленеді. Бұл жағдайда discard әдісі ештеңе жасамайды, ал remove әдісі KeyError ерекшелігін шығарылады. Pop әдісі жиынтықтан бір кездейсоқ элементті жойып және оның мәнін қайтарады. Жиын бос болса, KeyError ерекшелігі шығарылады. List функция көммегімен, жиынтықтан тізімді жасауға болады.
  • 6. Жиынтықтарғаорындалатыноперациялар Питонда жиынтықтарға математикадағыдай қарапайым операцияларды орындауға болады. A | B A.union(B) A және B жиынтықтардың бірлескен жиынтығын қайтарады. A |= B A.update(B) В жиынтықтын барлық элементтерін А жиынтығына қосады. A & B A.intersection(B) А және В жиынтықтар қиылысуы болатын жиынтықтарды қайтарады. A &= B A.intersection_update(B) А жиынтықта тек В жиынтықтағы бар элементтерді қалдырады. A - B A.difference(B) А және В жиынтықтардың айырымын (А- да бар, бірақ В-да жоқ элементтер) қалдырады. A -= B A.difference_update(B) А жиынтықтан В-да бар барлық элементтерді жояды.
  • 7. Жиынтықтарғаорындалатыноперациялар A ^ B A.symmetric_diffe rence(B) А және В жиынтықтардың симметриялы айырымын қайтарады (А немесе В-ға жататын, бірақ қатарынан екеуіне жатпайтын элементтер). A ^= B A.symmetric_diffe rence_update(B) А жиынтыққа А және В жиынтықтардың симметриялы айырымын жазады. A <= B A.issubset(B) А жиынтығы В-нің ішкі жиынтығы болғанда true мәнің қайтарады. A >= B A.issuperset(B) В жиынтығы А-нің ішкі жиынтығы болғанда true мәнің қайтарады. A < B A <= B and A != B эквивалентті A > B A >= B and A != B эквивалентті
  • 9. Сөздіктер Тұрақты тізімдер (массивтер) - нөмірленген элементтер жиынтығынан тұрады, яғни тізімнің кез келген элементіне сілтеме жасау үшін оның нөмірін көрсету қажет. Тізімдегі элементтің нөмірін элементтін өзі анықтайды. Бірақ деректерді сандық нөмірлер бойынша анықтау әрдайым ыңғайлы емес. Мысалы, Ресейдегі поездар маршруттары сандық-әріптік кодпен (сан және бір әріп), авиарейстер сандық-әріптік кодпен анықталады, яғни, поездардың немесе ұшақ ұшуларының ақпаратын сақтауға арналған сәйкестендіргіш ретінде мәтіндік жолды қолдану ыңғайлы болар еді. Оның элементтерін сандық көрсеткішпен емес, еркін түрде анықтауға мүмкіндік беретін деректер құрылымы сөздік немесе ассоциативті массив деп аталады. Python-да деректер құрылымы dict деп аталады. Мысалы: Capitals сөздікті құрылады, мұнда индекс ретінде ел болады, ал оның мәні ретінде осы елдін астанасы болады.
  • 10. Сөздіктер. Мысал: # Capitals бос сөздігін құрастыру Capitals = dict() # Оны бірнеше мәндермен толтыру Capitals[‘Kazakhstan'] = ‘Astana' Capitals['Ukraine'] = 'Kiev' Capitals['Russia'] = 'Moscow' Countries = ['Kazakhstan', 'France', 'USA', 'Russia'] for country in Countries: # тізімдегі әр ел үшін Capitals сөздігіне бар болғанына тексеру if country in Capitals: print(country+' елдін астанасы: '+Capitals[country]) else: print('Базада '+country+' атты ел жоқ') Нәтижесі: Kazakhstan елдін астанасы: Astana Базада France атты ел жоқ Ukraine елдін астанасы: Kiev Russia елдін астанасы: Moscow
  • 11. Сөздіктер Сонымен, сөздіктін әр элементі екі объекттен тұрады: кілті және мәні. Жоғарыда көрсетілген мысалда кілт ретінде ел аты, ал мәні ретінде астанасы болады. Кілт сөздік элементін тексереді, ал деректер осы кілтке сәйкес келетін мән. Кілттер міндері бірегей болады, сөздікте бірдей екі кілт бола алмайды. Ассоциативті массивтің тән ерекшелігі оның қозғалмалылығы болып табылады: оған еркін кілттермен жаңа элементтерді қосуға және бұрыннан бар элементтерді жоюға болады. Сонымен қоса қолданылатын жадтың өлшемі ассоциативті массив өлшеміне пропорционалды. Python тіліндегі кілт ретінде өзгермейтін деректер түрі болуы мүмкін: бүтін және нақты сандар, жолдар және кортеждер. Сөздікдегі кілт ретінде жиынтық бола алмайды, бірақ frozenset атты элементі болуы мүмкін: құрудан кейін өзгертуге мүмкіндігі жоқ set типті арнайы деректер түрі.
  • 12. Сөздіктерду қолдану уақыттары Сөздіктерді келесі жағдайларда қолдану керек: 1) Кейбір объектілердің санын есептеу. Бұл жағдайда, кілт ретінде объект болған сөздікті құру керек, ал мәндері - олардың саны. 2) Объектпен байланысты кез-келген деректерді сақтау. Кілттер - объекттер, мәндер олармен байланысты деректер. Мысалы, егер айдың атауымен оның реттік нөмірін анықтау қажет болса, оны Num['January']=1; Num['February']=2; .... сөздігі көмегімен жасауға болады; 3) Объекттер арасында сәйкестікті орнату (мысалы, “ата- ана—ұрпағы”). Кілт — объект, мән — оған сәйкесінше объект. 4) Егер сізге қарапайым массив қажет болса, бірақ элемент индексінің ең үлкен мәні өте үлкен және мүмкін индекстердің барлығы («сирек массив» деп аталатын) пайдаланылмаса, сонда жадты сақтау үшін ассоциативті массивті пайдалана аласыз.
  • 13. Сөздікті құру Бос сөздікті dict() функциясы немесе бос тұрған қос ирек жақша көмегімен құруға болады. Бастапқы мәндер жинағымен сөздікті құру үшін, келесі конструкциларды қолдануға болады: Capitals = {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'} Capitals = dict (Russia = 'Moscow', Ukraine = 'Kiev', USA = 'Washington') Capitals = dict ([("Russia", "Moscow"), ("Ukraine", "Kiev"), ("USA", "Washington")]) Capitals = dict (zip(["Russia", "Ukraine", "USA"], ["Moscow", "Kiev", "Washington"])) print(Capitals) Нәтижесі: {'Russia': 'Moscow', 'Ukraine': 'Kiev', 'USA': 'Washington'}
  • 14. Сөздікті құру Алғашқы екі әдіс барлық элементтерді атап өтіп шағын сөздіктерді жасау үшін пайдаланылуы мүмкін. Сонымен қатар, екінші әдісінде кілттер dict функциясының аталған параметрлері ретінде беріледі, сондықтан бұл жағдайда кілттер тек жолдар типті болуы мүмкін және олар жарамды идентификаторлар болып табылады. Үшінші және төртінші жағдайда үлкен сөздіктерді жасауға болады, егер аргументтер ретінде дайын тізімдерін ұсынса, ол барлық элементтерді тізімдеу арқылы міндетті түрде алынбауы мүмкін. Үшінші әдісте dict функциясына әр элемент екі элементтен (кілт және мәні) тұратын кортеж болатын тізімді беру керек: кілт және мән. Төртінші әдісінде ұзындықтары бірдей екі тізім (кілттер тізімі және мәндер тізімі) берілетін zip функциясы қолданылады.
  • 15. Сөздік элементтерімен жұмыс Негізгі операция: элемент мәнін кілтпен алу, жазылуы тізімдерге ұқсас: A[key]. Егер сөздікте кілттпен құрылған элемент болмаса, KeyError шығарылады. Кілтпен мәнді анықтаудың тағы бір әдісі - get:A.get(key). Егер get кілтімен элемент сөздікте болмаса, онда None мәні қайтарылады. Екі аргументті A.get(key, val) жазбада, егер key кілтті элемент сөздікте жоқ болса, онда әдіс val мәнін қайтарады. Элементтің сөздікке жататындығын тексеру үшін, жиынтықтарда сияқты in және not in операциялар көмегімен орындауға болады. Сөздікке жаңа элементті енгізу үшін, оған бір мәнді меншіктеуге болады: A[key] = value. Элементті сөздіктен жою үшін, del A[key] операциясын қолдануға болады (егер сөздік сөздікте мұндай кілт жоқ болса, онда операция KeyError жағдайын шығарады).
  • 16. Сөздік элементтерімен жұмыс Элементті сөздіктен жоюдың екі әдісі: A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'} key = 'ab' if key in A: del A[key] try: del A[key] except KeyError: print('There is no element with key "' + key + '" in dict') print(A) Бірінші жағдайда элементтін бар болуына алдын ала тексеріс жасаймыз. Ал екінші жағдайда алып тастауды ұстап алу және өңдеу. Нәтижесі: {'aa': 'aa', 'bb': 'bb', 'ba': 'ab'} 1 әдіс 2 әдіс
  • 17. Сөздік элементтерімен жұмыс Элементті сөздіктен жоюдың тағы бір жолы - ол pop:A.pop (key) әдісін қолдану. Бұл әдіс, егер берілген кілтті элемент сөздікте болмаса, онда жойылатын элементтін мәні қайтарылады,. Егер pop әдісіне екінші параметр жіберілсе, онда сөздікте элемент болмаса, осы параметрдің мәнін қайтарылады. Бұл сөздіктен элементті қауіпсіз жоюды оңай ұйымдастыруға мүмкіндік береді: A.pop(key, None). A = {'ab' : 'ba', 'aa' : 'aa', 'bb' : 'bb', 'ba' : 'ab'} key = 'ab' if key in A: A.pop(key) print(A) Нәтижесі: {'aa': 'aa', 'bb': 'bb', 'ba': 'ab'}
  • 18. Сөздік элементтерін санау Можно легко организовать перебор ключей всех элементов в словаре: Сөздікдегі барлық элементтердің кілттері бойынша санауды ұйымдастыру: A = dict(zip('abcdef', list(range(6)))) for key in A: print(key, A[key]) Келесі әдістер сөздік элементтерінің ұсынуын қайтарады. Ұсыныстар көп жағдайларды жиынтықтарға ұқсас, бірақ егер сөздік элементтерінің мәндерін өзгерткенде олар өзгереді. Keys әдісі барлық элементтердің кілттерінің ұсынысын қайтарады, values әдісі барлық мәндердің ұсынуын қайтарады және items әдісі кілттер мен мәндердің барлық жұбының (түймелерінің) ұсынысын қайтарады. Нәтижесі: a 0 b 1 c 2 d 3 e 4 f 5
  • 19. Сөздік элементтерін санау A сөздігінде барлық элементер мәндері арасында val мәннің бар болуын тексеру val in A.values() көмегімен орындауға болады. Key айнымалысында элемент кілті болу үшін, ал val айнымалысында оның мәні болу үшін цикл ұйымдастырылды. A = dict(zip('abcdef', list(range(6)))) for key, val in A.items(): print(key, val) Нәтижесі: a 0 b 1 c 2 d 3 e 4 f 5