פייתון/פייתון גרסה 3/קבוצה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

קבוצה (set) היא אוסף של איברים אשר אינם חוזרים על עצמם וללא חשיבות לסדרם. על כן לא ניתן להשתמש באינדקסים ופעולות נוספות הקשורות למיקומים של איברים על קבוצות.

מבנה[עריכה]

>>> a={1,2,3,4}
>>> type(a)
<class 'set'>

תכונות יחידיות של קבוצה[עריכה]

אין חזרה[עריכה]

נשתמש בפונקצית set בכדי לייצר קבוצה.

>>>>>> word='apple'
>>> set(word)
{'e', 'a', 'p', 'l'}

כפי שניתן לראות איברים שחזרו על עצמם נעלמו מהקבוצה.

אין חשיבות לסדר[עריכה]

נשתמש ב-slice בכדי לשלוף איבר מהקבוצה:

>>> s={1,2,3}
>>> s[1]
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    s[1]
TypeError: 'set' object does not support indexing

קבלנו הודעת שגיאה מאחר שבקבוצה אין חשיבות לסדר ועל כן לא ניתן לשלוף ממנה איברים על פי מיקומם.

פעולות ארתמטיות[עריכה]

איחוד[עריכה]

Menge Venn-Diagramm 010.svg

איחוד של קבוצות מתבצע באמצעות הסימן |

>>> a={1,2,3,4,5}
>>> b={6,7,5,3,8}
>>> a|b
{1, 2, 3, 4, 5, 6, 7, 8}

ניתן לבצע חיבור של קבוצות גם באמצעות הפונקציה union.

חיסור[עריכה]

Menge Venn-Diagramm 006.svg

ניתן לבצע פעולות ארתמטיות

>>> a={1,2,3,4,5}
>>> b={6,7,5,3,8}
>>> a-b
{1, 2, 4}

כמו גם קיימת הפונקציה difference

חיתוך[עריכה]

Menge Venn-Diagramm 008.svg

חיתוך קבוצות מתבצע באמצעות פעולת & :

>>> a={1,2,3,5,7}
>>> b={3,5,6,72,1}
>>> a&b
{1, 3, 5}

יתרונה של הקבוצהה שהיא יכולה לבצע חיתוך של מחרוזת (אך היא מוחקת איברים החוזרים על עצמם):

>>> a=set('12344556')
>>> a
{'6', '4', '2', '3', '5', '1'}


ניתן לבצע איחוד באמצעות הפונקציה intersection

לא בחיתוך[עריכה]

Menge Venn-Diagramm 009.svg

לא בחיתוך (xor) הם כל האיברים שנמצאים בקבוצה A ובקבוצה B אך לא בשניהם:

>>> a={1,245,'a',54,6,'b'}
>>> b={4,6,1,6,'b'}
>>> a^b
{'a', 4, 245, 54}

דוגמה[עריכה]

השוואה בין שני טקסטים

#from string to list
str1 = "ABC NCD DFS DSF TPY SDR"
str2 = "NKS MKS DSO SDR SDU DFH"

L1=str1.split(' ')
L2=str2.split(' ')

#creats sets
S1=set(L1)
s2=set(L2)

#range of the list
print(range(len(L1)))

for i in range(len(L1)):
    print(i)

#creat dict for a word
seqalign=[]

for i in range(len(L1)):
    if L1[i] == L2[i]:
        seqalign.append(L1)
    else:
        seqalign.append("~~~")
print(L1)
print(L2)

#words in both list
print(seqalign)
    
range(0, 6)
0
1
2
3
4
5
['ABC', 'NCD', 'DFS', 'DSF', 'TPY', 'SDR']
['NKS', 'MKS', 'DSO', 'SDR', 'SDU', 'DFH']
['~~~', '~~~', '~~~', '~~~', '~~~', '~~~']

ראה גם[עריכה]