DEV Community

John Mark Bulabos
John Mark Bulabos

Posted on

Top 10 Python Functions That You Aren’t Using... But Should Be

Ahoy there, you suave Pythonistas and code-slinging pythoneers! 🎩 Ready to take your Python wrangling skills to the next level? The Python gods have bestowed upon us functions more magical than the sorting hat at Hogwarts, and it’s high time we unlocked their true potential. 🧙

So, grab a snake-sized coffee ☕, put on your best Indiana Jones hat, and let's start digging into this treasure trove of Python goodness. 🐍

1. The Elusive enumerate() 🗂

Ever felt like a marathon runner counting the number of times you’ve been lapped? Well, with enumerate() you won't have to, because this beauty adds a counter to your loop. Look Ma, no hands!

for index, value in enumerate(["apple", "banana", "cherry"], start=1):
    print(f"The index is {index} and the value is {value}")
Enter fullscreen mode Exit fullscreen mode

2. zip() Up Your Lists 🤐

Two lists on a date, but you're the third wheel? With zip(), you can zip them together and send them on their way. Talk about being a wingman!

names = ["Batman", "Superman", "Wonder Woman"]
superpowers = ["Rich", "Strong", "Lasso of Truth"]

for hero, power in zip(names, superpowers):
    print(f"{hero} is really just super {power}!")
Enter fullscreen mode Exit fullscreen mode

3. collections.Counter() — The Crowd Tamer 📊

Do you have too many elements to count? Fret not! Counter() will help you figure out who's the party animal in your list.

from collections import Counter
party_list = ["Alice", "Bob", "Alice", "Eve", "Bob", "Eve", "Alice"]
print(Counter(party_list))
# Output: Counter({'Alice': 3, 'Bob': 2, 'Eve': 2})
Enter fullscreen mode Exit fullscreen mode

4. functools.lru_cache() — The Time Traveler ⏱

Do your functions take longer to execute than waiting for a sloth to finish a marathon? Just add @lru_cache above your function to make it faster than The Flash.

from functools import lru_cache

@lru_cache
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)
Enter fullscreen mode Exit fullscreen mode

5. All Aboard the any() and all() Express 🚂

Can’t decide if you should go out tonight? Let any() and all() help you with your indecisiveness.

friends_going = [False, False, True, False]
print(any(friends_going))  # Output: True

chores_done = [True, True, True, True]
print(all(chores_done))  # Output: True
Enter fullscreen mode Exit fullscreen mode

6. Get Slick with itertools.chain() 🚲

Link your lists like a bicycle chain with itertools.chain() and ride smoothly through your dataset.

from itertools import chain

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined = list(chain(list1, list2))
print(combined)  # Output: [1, 2, 3, 'a', 'b', 'c']
Enter fullscreen mode Exit fullscreen mode

7. The Great defaultdict() Magician 🎩

Tired of KeyError showing up uninvited? Make it disappear with defaultdict(). Now, every time you try to access a key that doesn’t exist, defaultdict() will create it for you. Abra-ka-dabra!

from collections import defaultdict

d = defaultdict(int)
print(d["new_key"])  # Output: 0, and "new_key" is now a key in the dict
Enter fullscreen mode Exit fullscreen mode

8. Jazz Up with reversed() 🔄

Did you know that you can turn things around without taking a 180-degree U-turn? Keep your lists in check with reversed() without altering the original list!

original_list = [1, 2, 3, 4, 5]
for item in reversed(original_list):
    print(item, end=' ')  # Output: 5 4 3 2 1
Enter fullscreen mode Exit fullscreen mode

9. Don’t Get Lost, Use pathlib.Path() 🗺

Is navigating through files and directories driving you nuts? Put away that compass, because pathlib.Path() is the true north of directory navigation.

from pathlib import Path

# Navigate to your home directory and create a file there.
home = Path.home()
file = home / "treasure_map.txt"
file.touch()
print(f"Your treasure map is located at: {file}")
Enter fullscreen mode Exit fullscreen mode

10. The Underestimated else in Loops 🎢

Did you know loops have a secret sidekick called else? It executes when the loop has finished, like Batman showing up after the fight is over to take credit.

for i in range(5):
    if i == 10:
        break
else:
    print("Loop completed without a 'break'. Batman approves.")
Enter fullscreen mode Exit fullscreen mode

Disclaimers 📢:

  1. Be cautious while using functions like itertools.chain() and collections.Counter() on large datasets. They might consume more memory than an elephant at an all-you-can-eat buffet. 🐘
  2. Don’t overuse functools.lru_cache(). It's like a time machine – too much messing around can have unintended consequences.
  3. While defaultdict() is magical, make sure you really want to add a new key to your dict, or it might grow uncontrollably like Rapunzel's hair.

Conclusion 🚀

Congratulations, you’ve now been armed with 10 Python functions that are as useful as Dumbledore's wand. Cast spells like enumerate() to count effortlessly, and lru_cache() to speed up your functions. Use them wisely, or you might find yourself in a Python jungle without a map.

But, wait! There’s more! To keep your Python journey on track and unlock more arcane secrets, subscribe to PAIton and Crossovers on YouTube. Let’s conquer the Pythonic realms together, and remember: Python is all about having fun(ctions)!

Happy coding, fellow sorcerers! 🧙🔮🐍

Top comments (0)