DEV Community

Programming Entry Level: basics sets

Understanding Basics Sets for Beginners

Have you ever needed to store a list of unique items, without worrying about duplicates? Or quickly check if something exists within a collection? That's where sets come in! Sets are a fundamental data structure in programming, and understanding them is a great step towards becoming a more confident developer. They're also a common topic in technical interviews, so getting comfortable with them is a win-win.

2. Understanding Basics Sets

Imagine you're making a guest list for a party. You wouldn't want to invite the same person twice, right? A set is like that guest list – it's a collection of unique items. The order of items in a set doesn't matter.

Think of it like this:

  • Set: {apple, banana, orange}
  • Not a Set (because of duplicates): {apple, banana, apple, orange} – this would simplify to {apple, banana, orange}

Sets are useful because they provide a very efficient way to:

  • Store unique values: Automatically removes duplicates.
  • Check for membership: Quickly determine if an item is already in the set.
  • Perform mathematical set operations: Like finding the union, intersection, or difference between sets (we'll touch on this briefly later).

Here's a simple visual representation using a mermaid diagram:

graph LR
    A[Set A: {1, 2, 3}]
    B[Set B: {3, 4, 5}]
    C[Intersection: {3}]
    D[Union: {1, 2, 3, 4, 5}]
    A --> C
    B --> C
    A --> D
    B --> D
Enter fullscreen mode Exit fullscreen mode

This diagram shows two sets, A and B, and illustrates how you can find the elements they have in common (intersection) and all the elements from both sets combined (union).

3. Basic Code Example

Let's look at how to create and use sets in Python and JavaScript.

Python:

# Creating a set

my_set = {1, 2, 3, 3, 4}  # Notice the duplicate '3'

print(my_set)

# Checking if an element exists

print(2 in my_set)
print(5 in my_set)

# Adding an element

my_set.add(5)
print(my_set)

# Removing an element

my_set.remove(1)
print(my_set)
Enter fullscreen mode Exit fullscreen mode

Now let's explain the Python code:

  1. my_set = {1, 2, 3, 3, 4} creates a set. Notice that even though we included 3 twice, the set only stores it once.
  2. print(my_set) will output {1, 2, 3, 4}.
  3. 2 in my_set checks if the number 2 is present in the set. It returns True.
  4. 5 in my_set checks if the number 5 is present. It returns False.
  5. my_set.add(5) adds the number 5 to the set.
  6. my_set.remove(1) removes the number 1 from the set.

JavaScript:

// Creating a set
const mySet = new Set([1, 2, 3, 3, 4]); // Notice the duplicate '3'
console.log(mySet);

// Checking if an element exists
console.log(mySet.has(2));
console.log(mySet.has(5));

// Adding an element
mySet.add(5);
console.log(mySet);

// Removing an element
mySet.delete(1);
console.log(mySet);
Enter fullscreen mode Exit fullscreen mode

And here's the explanation for the JavaScript code:

  1. const mySet = new Set([1, 2, 3, 3, 4]); creates a new set. Like in Python, duplicates are automatically removed.
  2. console.log(mySet) will output Set(4) { 1, 2, 3, 4 }.
  3. mySet.has(2) checks if the number 2 is in the set. It returns true.
  4. mySet.has(5) checks if the number 5 is in the set. It returns false.
  5. mySet.add(5) adds the number 5 to the set.
  6. mySet.delete(1) removes the number 1 from the set.

4. Common Mistakes or Misunderstandings

Let's look at some common pitfalls when working with sets.

❌ Incorrect code (Python - trying to access elements by index):

my_set = {1, 2, 3}
print(my_set[0])  # This will cause an error!

Enter fullscreen mode Exit fullscreen mode

✅ Corrected code (Python - iterating through the set):

my_set = {1, 2, 3}
for element in my_set:
    print(element)
Enter fullscreen mode Exit fullscreen mode

Explanation: Sets are unordered. You can't access elements by index like you can with lists. You need to iterate through the set to access its elements.

❌ Incorrect code (JavaScript - thinking sets are arrays):

const mySet = new Set([1, 2, 3]);
console.log(mySet.length); // This will not work as expected
Enter fullscreen mode Exit fullscreen mode

✅ Corrected code (JavaScript - using the size property):

const mySet = new Set([1, 2, 3]);
console.log(mySet.size); // This gives the number of elements
Enter fullscreen mode Exit fullscreen mode

Explanation: Sets don't have a length property like arrays. Use the size property to get the number of elements in a set.

❌ Incorrect code (Python - trying to modify a set while iterating):

my_set = {1, 2, 3}
for element in my_set:
    if element == 2:
        my_set.remove(2)
print(my_set) # This can lead to unexpected behavior

Enter fullscreen mode Exit fullscreen mode

✅ Corrected code (Python - creating a new set):

my_set = {1, 2, 3}
new_set = set()
for element in my_set:
    if element != 2:
        new_set.add(element)
my_set = new_set
print(my_set)
Enter fullscreen mode Exit fullscreen mode

Explanation: Modifying a set while iterating over it can lead to unpredictable results. It's safer to create a new set with the desired elements.

5. Real-World Use Case

Let's say you're building a simple application to track unique website visitors. You want to know how many distinct users have visited your site.

class WebsiteTracker:
    def __init__(self):
        self.visitors = set()

    def track_visitor(self, ip_address):
        self.visitors.add(ip_address)

    def get_unique_visitor_count(self):
        return len(self.visitors)

# Example usage

tracker = WebsiteTracker()
tracker.track_visitor("192.168.1.1")
tracker.track_visitor("10.0.0.1")
tracker.track_visitor("192.168.1.1")  # Duplicate IP address

print("Number of unique visitors:", tracker.get_unique_visitor_count()) # Output: 2

Enter fullscreen mode Exit fullscreen mode

In this example, the WebsiteTracker class uses a set (self.visitors) to store the IP addresses of visitors. Because sets only store unique values, we automatically get an accurate count of distinct visitors.

6. Practice Ideas

Here are a few exercises to help you solidify your understanding of sets:

  1. Find the difference: Write a function that takes two sets as input and returns a new set containing the elements that are in the first set but not in the second set.
  2. Common elements: Write a function that takes two sets and returns a new set containing only the elements that are present in both sets (the intersection).
  3. Remove duplicates from a list: Write a function that takes a list as input and returns a new list containing only the unique elements from the original list (using a set internally).
  4. Word frequency: Read a text file and use a set to find the unique words in the file.
  5. Set operations: Experiment with the union, intersection, difference, and symmetric difference operations available in Python and JavaScript.

7. Summary

Congratulations! You've taken your first steps into the world of sets. You now understand what sets are, how to create them, and how to perform basic operations like adding, removing, and checking for membership. You also learned about common mistakes to avoid and saw a real-world example of how sets can be used.

Don't be afraid to experiment and practice. Next, you might want to explore more advanced set operations or learn how sets can be used in conjunction with other data structures. Keep coding, and you'll become a set pro in no time!

Top comments (0)