פייתון/פייתון גרסה 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

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

פעולות ארתמטיות

עריכה

איחוד

עריכה
 

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

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

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

חיסור

עריכה
 

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

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

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

חיתוך

עריכה
 

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

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

לא בחיתוך

עריכה
 

לא בחיתוך (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']
['~~~', '~~~', '~~~', '~~~', '~~~', '~~~']

ראה גם

עריכה