Operasyonên saz bikin (mînak, destnîşankirina komên yekîtiyê, komên hilberan û binekomê) bi celebê setê Python

Dikan

Python celebek daneya çêkirî, set, ku koman digire peyda dike.

Koma tîpan berhevokek ji hêmanên ne-duber e (hêmanên ku ne heman nirx in, hêmanên yekta ne) û dikare karên setê yên wekî yekîtî, berhevoka hilber û cihêrengiyê pêk bîne.

Di vê beşê de, operasyonên bingehîn ên di operasyonên set-type de bi koda nimûneyê têne rave kirin.

  • Afirandina tiştên set:{},set()
  • nîşana tevlêbûnê danîn
  • Hejmara hêmanên di set:len()
  • Zêdekirina hêmanek li Set:add()
  • Jê hêmanek ji set:discard(),remove(),pop(),clear()
  • Wasset (hevkirin, yekîtî):|operator,union()
  • Komên hilberan (parçeyên hevpar, xêzkirin, xêzkirin):& makînevan,intersection()
  • temamkerê nisbî:-makînevan,difference()
  • set cudahiya simetrî:^ operator,symmetric_difference()
  • binkom an na:<= operator,issubset()
  • Komek jorîn an na:>= operator,issuperset()
  • Tesbîtkirina ka ew hevdu seretayî ne an na:isdisjoint()

Tîpa set cureyek guhêrbar e ku dikare hêmanan lê zêde bike û jêbibe, û her weha celebek cemidî jî heye ku wekî celebê sazûmanê heman operasiyona danînê û rêbazên din hene lê neguhêrbar e (bi zêdekirin, jêbirin, an bi rengek din guheztina hêmanan nayê guhertin ).

Afirandina objekta set::{},set()

Ji hêla pêlên pêlan ve hatî çêkirin {}

Tiştên cûrbecûr set dikarin bi girtina hêmanan di nav kêşan de {} werin afirandin.

Ger nirxên dubare hebin, ew têne paşguh kirin û tenê nirxên bêhempa wekî hêman dimînin.

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

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

Mimkun e ku celebên cûda wekî hêman hebin. Lêbelê, tiştên nûvekirî yên wekî celebên navnîşê nikarin bêne tomar kirin. Tuples destûr in.

Di heman demê de, ji ber ku celebên set bê rêz in, rêza ku ew têne hilberandin nayê hilanîn.

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

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

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

Cûreyên cihêreng, wek int û float, heke nirxên wan wekhev bin, dubare têne hesibandin.

s = {100, 100.0}

print(s)
# {100}

Ji ber ku birûskeke vala {} wekî tîpek ferhengê tê hesibandin, bi karanîna çêkera ku li dû tê diyar kirin dikare bireserek celebek vala (koma vala) were afirandin.

s = {}

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

Ji hêla sazkerê ve hatî çêkirin()

Tiştên cûrbecûr set jî dikarin bi avaker set() werin afirandin.

Danasîna tişta dubarekirî ya wekî lîsteyek an pirtikê wekî argûmanek berhevokek ku hêmanên wê tenê nirxên yekta ne, digel hêmanên dubare têne derxistin diafirîne.

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'>

Cûreyên cemidî yên neguhêrbar bi avakerê frozenset().

fs_l = frozenset(l)

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

Ger argûman ji holê were rakirin, nesneyek celeb-saziyek vala (komek vala) tê afirandin.

s = set()

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

Hêmanên ducarî dikarin bi karanîna set() ji navnîşek an pirtikê werin rakirin, lê rêza navnîşa orîjînal nayê parastin.

Ji bo veguheztina celebek sazûmanek nav lîsteyek an pirtikê, list(),tuple() bikar bînin.

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

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

Ji bo agahdariya li ser rakirina hêmanên dubare dema ku rêzê diparêzin, tenê hêmanên dubare derdixin, û hêmanên dubare di nav rêzek du-alî (lîsteya navnîşan) de hilberandin, li gotara jêrîn binêrin.

nîşana tevlêbûnê danîn

Her weha têgihiştinên navnîşê, têgihiştinên set hene. Di têgihiştinên lîsteyê de bi tenê bendikên çargoşe [] bi ristên {} veguherînin.

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

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

Ji bo bêtir agahdarî li ser nîşana têgihîştina navnîşê li gotara jêrîn binêrin.

Hejmara hêmanên di set:len()

Hejmara hêmanên di komekê de dikare bi fonksiyona çêkirî ya len () were bidestxistin.

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

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

Heke hûn dixwazin di her navnîşê de hejmara hêmanên ku hêmanên bi nirxên dubare, hwd hene bijmêrin, li gotara jêrîn binêrin.

Zêdekirina hêmanek li Set:add()

Ji bo ku hêmanek li komekê zêde bikin, rêbaza add() bikar bînin.

s = {0, 1, 2}

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

Jê hêmanek ji set:discard(),remove(),pop(),clear()

Ji bo ku hêmanek ji komekê derxînin, rêbazên avêtin(), jêbirin(), pop(), û zelal() bikar bînin.

Rêbaza discard() hêmana ku di argumanê de hatî destnîşan kirin jê dike. Ger nirxek ku di komê de tune were diyar kirin, tiştek nayê kirin.

s = {0, 1, 2}

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

s = {0, 1, 2}

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

Rêbaza remove() di heman demê de hêmana ku di argumanê de hatî destnîşan kirin radike, lê heke nirxek ku di berhevokê de tune were destnîşan kirin xeletiyek KeyError tê vegerandin.

s = {0, 1, 2}

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

# s = {0, 1, 2}

# s.remove(10)
# KeyError: 10

Rêbaza pop() hêmanan ji komekê derdixe û nirxên wan vedigerîne. Ne mumkin e ku meriv kîjan nirxan jê bike hilbijêrin. Komek vala dê bibe sedema xeletiyek 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'

Rêbaza clear() hemî hêmanan radike û set vala dike.

s = {0, 1, 2}

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

Wasset (hevkirin, yekîtî):|operator,union()

Koma yekîtiyê (hevgirtin, yekîtî) bi |-ê re dikare were bidestxistin operator an rêbaza yekîtiyê ().

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}

Gelek arguman dikarin ji bo rêbazek bêne diyar kirin. Ji xeynî cureya setê, lîste û tîpên ku ji hêla set() ve dikarin werin veguheztin celebê setê jî dikarin wekî arguman bêne destnîşan kirin. Heman tişt ji bo operator û rêbazên paşîn jî derbas dibe.

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}

Komên hilberan (parçeyên hevpar, xêzkirin, xêzkirin):& makînevan,intersection()

Komxebata hilberê (parçeya hevpar, xêzkirin, û xêzkirin) dikare bi & operator an jî rêbaza xaçerê().

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}

temamkerê nisbî:-makînevan,difference()

Komela ferqê dikare bi – operator an jî rêbaza cudahiyê() were bidestxistin.

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}

set cudahiya simetrî:^ operator,symmetric_difference()

Komela cudahiya sîmetrîk (koma hêmanên ku tenê di yek ji van herduyan de hene) dikare bi operatorê ^ an jî cudahiya_symmetric ().

Di operasyonên mentiqî de bi veqetandina taybetî (XOR) re wekhev e.

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

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

binkom an na:<= operator,issubset()

Ji bo destnîşankirina ka komek ji komek din e an na, rêbaza <= operator an jî rêbaza issubset() bikar bînin.

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

print(s1 <= s2)
# True

print(s1.issubset(s2))
# True

Hem rêbaza <= operator û hem jî rêbaza issubset() ji bo komên hevreha rast vedigerin.

Ji bo ku hûn diyar bikin ka ew binekomek rastîn e, operatora <= bikar bînin, ku ji bo komên hevreha xelet vedigerîne.

print(s1 <= s1)
# True

print(s1.issubset(s1))
# True

print(s1 < s1)
# False

Komek jorîn an na:>= operator,issuperset()

Ji bo ku hûn diyar bikin ka yek komek supersetek din e, >= operator an issuperset() bikar bînin.

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

print(s2 >= s1)
# True

print(s2.issuperset(s1))
# True

Hem rêbaza >= operator û hem jî rêbaza issuperset() ji bo komên hevreha rast vedigerin.

Ji bo destnîşankirina ka ew supersetek rastîn e, operatora >= bikar bînin, ku ji bo komên hevreha xelet vedigerîne.

print(s1 >= s1)
# True

print(s1.issuperset(s1))
# True

print(s1 > s1)
# False

Tesbîtkirina ka ew hevdu seretayî ne an na:isdisjoint()

Ji bo destnîşankirina ka du kom ji hev re seretayî ne, rêbaza isdisjoint() bikar bînin.

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

print(s1.isdisjoint(s2))
# False

print(s1.isdisjoint(s3))
# True
Copied title and URL