פייתון/פייתון גרסה 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']
['~~~', '~~~', '~~~', '~~~', '~~~', '~~~']