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