[Part 1](https://github.com/Asabeneh/30-Days-Of-Python) | [Part 2](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/readme7-12.md)| [Part 3](#)| [Part 4](#)| [Part 5](#) ![30DaysOfPython](./images/30DaysOfPython_banner3@2x.png) - [Day 7](#day-7) - [Set](#set) - [Creating a set](#creating-a-set) - [Getting set length](#getting-set-length) - [Accessing Items in set](#accessing-items-in-set) - [Checking an item](#checking-an-item) - [Adding items to a list](#adding-items-to-a-list) - [Removing item from a list](#removing-item-from-a-list) - [Clearing item in a set](#clearing-item-in-a-set) - [Deleting a set](#deleting-a-set) - [Converting list to set](#converting-list-to-set) - [Joining sets](#joining-sets) - [Finding intersection items](#finding-intersection-items) - [Finding intersection items](#finding-intersection-items-1) - [Checking subset and super set](#checking-subset-and-super-set) - [Checking difference between two sets](#checking-difference-between-two-sets) - [Finding Symmetric difference between two sets](#finding-symmetric-difference-between-two-sets) - [Joing set](#joing-set) - [Exercises: Day 7](#exercises-day-7) # Day 7 ## Set Let me take you back to your elementary or high school Mathematics lesson. The Mathematics definition of set can be applied also in python. Se is a collection of unordered and unindexed distinct elements. In python set use to store unique items, and it is possible find union, intersection, difference, symmetric difference, subset, super set and disjoint set. ### Creating a set We use {} to create a set. * Creating an empty set ```py # syntax st = {} # or st = set() ``` * Creating a set with initial items ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} ``` **Example:** ```py # syntax fruits = {'banana', 'orange', 'mango', 'lemon'} ``` ### Getting set length We use **len()** method to find the length of a set. ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} len(set) ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} len(fruits) ``` ### Accessing Items in set We use loops to access items. We will see this in loop section ### Checking an item To check if an item exist in a list use use *in*. ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} 'item3' in st ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} 'mango' in fruits ``` ### Adding items to a list Once a list is created we can not change an item but we can add additional items. * Add one item using *add()* ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} st.add('item5') ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} fruits.add('lime') ``` * Add multiple items or using *update()* ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} st.update(['item5','item6','item7']) ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} vegetables = ('Tomato', 'Potato', 'Cabbage','Onion', 'Carrot') fruits.update(vegetables) ``` ### Removing item from a list We can remove an item from a list using *remove()* method. If the item is not found *remove()* method raise an errors, so it is good to check if the item exist or not. However, *discard() method doesn't raise an error. ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} st.remove('item2") ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} fruits.pop() ``` ### Clearing item in a set If we want to clear or empty the set we use *clear* method. ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} st.clear() ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} fruits.clear() ``` ### Deleting a set If we want to the set itself we use *del* operator. ```py # syntax st = {'item1', 'item2', 'item3', 'item4'} del set ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} del fruits ``` ### Converting list to set We can convert list to set and set to list back. Converting list to set removes duplicates and only unique items will be reserved. ```py # syntax lst = ['item1', 'item2', 'item3', 'item4', 'item1'] lst = set(lst) # {'item2', 'item4', 'item1', 'item3'} ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} del fruits ``` ### Joining sets We can join two using the *union()* or *update() method. * Union This method returns a new set ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item5', 'item6', 'item7', 'item8'} st3 = st1.union(st2) ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} vegetables = {'Tomato', 'Potato', 'Cabbage','Onion', 'Carrot'} ``` * Update This method insert an other set ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item5', 'item6', 'item7', 'item8'} st1.update(st2) ``` **Example:** ```py fruits = {'banana', 'orange', 'mango', 'lemon'} vegetables = {'Tomato', 'Potato', 'Cabbage','Onion', 'Carrot'} ``` ### Finding intersection items Intersection returns a set of items which are in both the sets. See the example ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item3', 'item2'} st1.intersection(st2) # {'item3', 'item2'} ``` **Example:** ```py whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10} even_numbers = {0, 2, 4, 6, 8, 10} whole_numbers.intersection(even_numbers) # {0, 2, 4, 6, 8, 10} python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.intersection(dragon) # {'o', 'n'} ```### Finding intersection items Intersection returns a set of items which are in both the sets. See the example ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item3', 'item2'} st1.intersection(st2) # {'item3', 'item2'} ``` **Example:** ```py whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10} even_numbers = {0, 2, 4, 6, 8, 10} whole_numbers.intersection(even_numbers) # {0, 2, 4, 6, 8, 10} python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.intersection(dragon) # {'o', 'n'} ``` ### Checking subset and super set A set can be a subset or super set of other sets: * Subset: *issubset()* * Super set: *issuperset* ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item2', 'item3'} st2.issubset(st1) # True st1.issuperset(st2) # True ``` **Example:** ```py whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} even_numbers = {0, 2, 4, 6, 8, 10} whole_numbers.issubset(even_numbers) # False, because it is super set whole_numbers.issuperset(even_numbers) # True python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.issubset(dragon) # False ``` ### Checking difference between two sets It return the difference between the two sets. ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item2', 'item3'} st2.difference(st1) # {'item1', 'item4'} => st1\st2 ``` **Example:** ```py whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} even_numbers = {0, 2, 4, 6, 8, 10} whole_numbers.difference(even_numbers) # {1, 3, 5, 7} python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.difference(dragon) # {'p', 'y', 't'} dragon.difference(python) # {'d', 'r', 'a', 'g'} ``` ### Finding Symmetric difference between two sets It return the the symmetric difference between the two sets, it means that it return a set that contains all items from both sets, except items that are present in both set, mathematically: (A\B) U (B\A) ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item2', 'item3'} # it mean (A\B)U(B) st2.symmetric_difference(st1) # {'item1', 'item4'} ``` **Example:** ```py whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} even_numbers = {1, 2, 3, 4, 5} whole_numbers.symmetric_difference(even_numbers) # {0, 6, 7, 8, 9, 10} python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.symmetric_difference(dragon) # {'r', 't', 'p', 'y', 'g', 'a', 'd'} ``` ### Joing set If two set do not have common item or items we call it disjoint set. We can check if two sets are joint or disjoint using *isdisjoint()* method. ```py # syntax st1 = {'item1', 'item2', 'item3', 'item4'} st2 = {'item2', 'item3'} st2.isdisjoint(st1) # False ``` **Example:** ```py even_numbers = {0, 2, 4 ,6, 8} even_numbers = {1, 3, 5, 7, 9} even_numbers.isdisjoint(odd_numbers) # True, because no common item python = {'p', 'y', 't', 'o','n'} dragon = {'d', 'r', 'a', 'g', 'o','n'} python.disjoint(dragon) # False, there is common items {'o', 'n'} ``` ## Exercises: Day 7 ```py it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle' 'Amazon''} A = {19, 22, 24, 20, 25, 26} B = {19, 22, 20, 25, 26, 24, 28, 27} age = [22, 19, 24, 25, 26, 24, 25, 24] ``` 1. Find the length of the set, it_companies 2. Add 'Twitter' to it companies 3. Insert multiple it companies at once to the set, it_companies 4. Remove one of the companies from the set, it_companies 5. What is the difference between remove and discard 6. Join A and B 7. Fin A intersection B 8. Is A subset of B 9. Are A and B disjoint sets 10. Join A with B and B with A 11. What is the symmetric difference between A and B 12. Delete the sets completely 13. Convert the ages to set and compare the length of the list and the set 14. Explain the difference among the following data types: string, list, tuple and set [<< Part 1 ](https://github.com/Asabeneh/30-Days-Of-Python/blob/master/readme.md)| [Part 3 >>](#)