Python жиынының түрімен операцияларды орнату (мысалы, біріктіру жиындарын, өнім жиындарын және ішкі жиындарды анықтау)

Іскерлік

Python жиындарды өңдейтін кірістірілген деректер түрін ұсынады.

Түр жиыны қайталанбайтын элементтердің (бірдей мән емес элементтер, бірегей элементтер) жинағы болып табылады және біріктіру жиыны, өнім жиыны және айырмашылық жиыны сияқты жиын әрекеттерін орындай алады.

Бұл бөлімде жиын түріндегі жиын операцияларындағы негізгі операциялар үлгі кодымен түсіндіріледі.

  • Жиынтық объектілерді құру:{},set()
  • қосу белгісін орнату
  • Жиынтағы элементтер саны:len()
  • Жиынға элемент қосу:add()
  • Жиыннан элементті жою:discard(),remove(),pop(),clear()
  • Вассет (біріктіру, біріктіру):|оператор,union()
  • Өнім жиынтықтары (жалпы бөліктер, қиылыстар, қиылыстар):& оператор,intersection()
  • салыстырмалы толықтауыш:-оператор,difference()
  • симметрия айырымы жиыны:^ операторы,symmetric_difference()
  • ішкі жиын немесе жоқ:<= операторы,issubset()
  • Жоғарғы жиынтық немесе жоқ:>= оператор,issuperset()
  • Олардың өзара негізгі немесе жоқтығын анықтау:isdisjoint()

Жиын түрі – элементтерді қосуға және жоюға болатын өзгермелі түр, сонымен қатар жиын түрі сияқты жиын әрекеті мен басқа әдістері бар, бірақ өзгермейтін (элементтерді қосу, жою немесе басқа жолмен өзгерту арқылы өзгерту мүмкін емес) frozenset түрі бар. ).

Жиын объектісін құру::{},set()

Толқындық жақшалар арқылы жасалған {}

Жиын типті нысандарды элементтерді {} жақшаға алу арқылы жасауға болады.

Егер қайталанатын мәндер болса, олар еленбейді және элементтер ретінде бірегей мәндер ғана қалады.

s = {1, 2, 2, 3, 1, 4}

print(s)
print(type(s))
# {1, 2, 3, 4}
# <class 'set'>

Элементтер ретінде әртүрлі типтер болуы мүмкін. Дегенмен, тізім түрлері сияқты жаңартылатын нысандарды тіркеу мүмкін емес. Кортеждерге рұқсат етіледі.

Сондай-ақ, жиын түрлері ретсіз болғандықтан, олардың жасалу реті сақталмайды.

s = {1.23, 'abc', (0, 1, 2), 'abc'}

print(s)
# {(0, 1, 2), 1.23, 'abc'}

# s = {[0, 1, 2]}
# TypeError: unhashable type: 'list'

int және float сияқты әртүрлі типтер, егер олардың мәндері баламалы болса, көшірмелер болып саналады.

s = {100, 100.0}

print(s)
# {100}

Бос жақша {} сөздік түрі болып есептелетіндіктен, бос жиын типті нысанды (бос жиын) келесі сипатталған конструктор арқылы жасауға болады.

s = {}

print(s)
print(type(s))
# {}
# <class 'dict'>

Конструктор жинағы() арқылы жасалған

Жиын типті объектілерді set() конструкторымен де жасауға болады.

Аргумент ретінде тізім немесе кортеж сияқты қайталанатын нысанды көрсету элементтері қайталанатын элементтерді алып тастаған бірегей мәндер болатын жиын нысанын жасайды.

l = [1, 2, 2, 3, 1, 4]

print(l)
print(type(l))
# [1, 2, 2, 3, 1, 4]
# <class 'list'>

s_l = set(l)

print(s_l)
print(type(s_l))
# {1, 2, 3, 4}
# <class 'set'>

Өзгермейтін frozenset түрлері frozenset() конструкторымен жасалады.

fs_l = frozenset(l)

print(fs_l)
print(type(fs_l))
# frozenset({1, 2, 3, 4})
# <class 'frozenset'>

Егер аргумент алынып тасталса, бос жиын типті нысан (бос жиын) жасалады.

s = set()

print(s)
print(type(s))
# set()
# <class 'set'>

Қайталанатын элементтерді set() арқылы тізімнен немесе кортежден жоюға болады, бірақ бастапқы тізімнің реті сақталмайды.

Жиын түрін тізімге немесе кортежге түрлендіру үшін list(), tuple() пайдаланыңыз.

l = [2, 2, 3, 1, 3, 4]

l_unique = list(set(l))
print(l_unique)
# [1, 2, 3, 4]

Тәртіпті сақтау кезінде қайталанатын элементтерді жою, тек қайталанатын элементтерді шығару және екі өлшемді массивте қайталанатын элементтерді өңдеу (тізімдер тізімі) туралы ақпаратты келесі мақаланы қараңыз.

қосу белгісін орнату

Тізіммен түсіну сияқты, жиынтық түсініктер де бар. Тізімді түсінуде жай ғана [] жақшаларды {} жақшалармен ауыстырыңыз.

s = {i**2 for i in range(5)}

print(s)
# {0, 1, 4, 9, 16}

Тізімді түсіну белгілері туралы қосымша ақпарат алу үшін келесі мақаланы қараңыз.

Жиынтағы элементтер саны:len()

Жиынтағы элементтердің санын len() кірістірілген функциясы арқылы алуға болады.

s = {1, 2, 2, 3, 1, 4}

print(s)
print(len(s))
# {1, 2, 3, 4}
# 4

Қайталанатын мәндері бар элементтері және т.б. бар әрбір тізімдегі элементтердің санын санағыңыз келсе, келесі мақаланы қараңыз.

Жиынға элемент қосу:add()

Жиынға элемент қосу үшін add() әдісін пайдаланыңыз.

s = {0, 1, 2}

s.add(3)
print(s)
# {0, 1, 2, 3}

Жиыннан элементті жою:discard(),remove(),pop(),clear()

Жиыннан элементті жою үшін discard(), remove(), pop() және clear() әдістерін пайдаланыңыз.

Discard() әдісі аргументте көрсетілген элементті жояды. Егер жиында жоқ мән көрсетілсе, ештеңе жасалмайды.

s = {0, 1, 2}

s.discard(1)
print(s)
# {0, 2}

s = {0, 1, 2}

s.discard(10)
print(s)
# {0, 1, 2}

Remove() әдісі аргументте көрсетілген элементті де жояды, бірақ жиында жоқ мән көрсетілсе, KeyError қатесі қайтарылады.

s = {0, 1, 2}

s.remove(1)
print(s)
# {0, 2}

# s = {0, 1, 2}

# s.remove(10)
# KeyError: 10

pop() әдісі жиыннан элементтерді жояды және олардың мәндерін қайтарады. Қай мәндерді жою керектігін таңдау мүмкін емес. Бос жиын KeyError қатесіне әкеледі.

s = {2, 1, 0}

v = s.pop()

print(s)
print(v)
# {1, 2}
# 0

s = {2, 1, 0}

print(s.pop())
# 0

print(s.pop())
# 1

print(s.pop())
# 2

# print(s.pop())
# KeyError: 'pop from an empty set'

clear() әдісі барлық элементтерді жояды және жиынды бос етеді.

s = {0, 1, 2}

s.clear()
print(s)
# set()

Вассет (біріктіру, біріктіру):|оператор,union()

Бірлестік жиынын (біріктіру, біріктіру) | арқылы алуға болады операторы немесе union() әдісі.

s1 = {0, 1, 2}
s2 = {1, 2, 3}
s3 = {2, 3, 4}

s_union = s1 | s2
print(s_union)
# {0, 1, 2, 3}

s_union = s1.union(s2)
print(s_union)
# {0, 1, 2, 3}

Әдіс үшін бірнеше аргументтерді көрсетуге болады. Жиын түріне қосымша set() арқылы жиын түріне түрлендіруге болатын тізімдер мен кортеждер де аргументтер ретінде көрсетілуі мүмкін. Бұл келесі операторлар мен әдістерге де қатысты.

s_union = s1.union(s2, s3)
print(s_union)
# {0, 1, 2, 3, 4}

s_union = s1.union(s2, [5, 6, 5, 7, 5])
print(s_union)
# {0, 1, 2, 3, 5, 6, 7}

Өнім жиынтықтары (жалпы бөліктер, қиылыстар, қиылыстар):& оператор,intersection()

Өнім жиынтығын (ортақ бөлік, қиылысу және қиылысу) & операторы немесе intersection() әдісі.

s_intersection = s1 & s2
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2)
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2, s3)
print(s_intersection)
# {2}

салыстырмалы толықтауыш:-оператор,difference()

Айырмалар жиынын – операторы немесе айырма() әдісі арқылы алуға болады.

s_difference = s1 - s2
print(s_difference)
# {0}

s_difference = s1.difference(s2)
print(s_difference)
# {0}

s_difference = s1.difference(s2, s3)
print(s_difference)
# {0}

симметрия айырымы жиыны:^ операторы,symmetric_difference()

Симметриялық айырмашылықтар жиынын (екеуінің біреуінде ғана қамтылған элементтер жиыны) ^ операторы немесе симметриялық_айырма() арқылы алуға болады.

Логикалық операциялардағы эксклюзивті дизъюнкцияға (XOR) баламалы.

s_symmetric_difference = s1 ^ s2
print(s_symmetric_difference)
# {0, 3}

s_symmetric_difference = s1.symmetric_difference(s2)
print(s_symmetric_difference)
# {0, 3}

ішкі жиын немесе жоқ:<= операторы,issubset()

Жиынның басқа жиынның ішкі жиыны екенін анықтау үшін <= операторын немесе issubset() әдісін пайдаланыңыз.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s1 <= s2)
# True

print(s1.issubset(s2))
# True

<= операторы да, issubset() әдісі де баламалы жиындар үшін ақиқат қайтарады.

Оның шын ішкі жиын екенін анықтау үшін, баламалы жиындар үшін жалған мәнін қайтаратын <= операторын пайдаланыңыз.

print(s1 <= s1)
# True

print(s1.issubset(s1))
# True

print(s1 < s1)
# False

Жоғарғы жиынтық немесе жоқ:>= оператор,issuperset()

Бір жиынның екінші жиынның жоғарғы жиыны екенін анықтау үшін >= операторын немесе issuperset() пайдаланыңыз.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s2 >= s1)
# True

print(s2.issuperset(s1))
# True

>= операторы да, issuperset() әдісі де баламалы жиындар үшін ақиқат қайтарады.

Оның шын жоғарғы жиын екенін анықтау үшін >= операторын пайдаланыңыз, ол баламалы жиындар үшін жалған мәнін қайтарады.

print(s1 >= s1)
# True

print(s1.issuperset(s1))
# True

print(s1 > s1)
# False

Олардың өзара негізгі немесе жоқтығын анықтау:isdisjoint()

Екі жиын бір-біріне жай екенін анықтау үшін isdisjoint() әдісін пайдаланыңыз.

s1 = {0, 1}
s2 = {1, 2}
s3 = {2, 3}

print(s1.isdisjoint(s2))
# False

print(s1.isdisjoint(s3))
# True