Hi Reader,
Thanks for sticking with me through all of those Black Friday emails! π
Seriously, though, I'm glad you're still here! π
Now it's time to get back to the tips! π
βVisual Anagramsβ
This is a collection of "multi-view" optical illusions generated by diffusion models (similar to DALL-E and Stable Diffusion). I can't get over how good these are, and I'd encourage you to spend a few minutes checking them out!
There's also a research paper explaining how these were constructed, as well as a Colab notebook you can use to create your own!
On Friday, I was working on a problem from the Python Problem-Solving Bootcamp that I talked about last week.
The problem boils down to this:
You have a text file containing 2000 numbers (one per line). If you walk through them in order, how many times is the current number greater than the previous number?
For example, if the first 8 numbers looked like this...
...the answer would be 5, since the value increases 5 times (and decreases 2 times) when walking through the numbers from left to right.
How would YOU solve this problem with code? Give it some thought, and then keep scrolling...
The first step is to read in the data. I used a context manager (the with block) to ensure that the file would automatically be closed.
Within the block, I used a list comprehension to read in the file line-by-line and convert each number (which was originally a string) into an integer:
We can slice the resulting list to view the first 8 elements, and also confirm the length of the list:
Now we're ready to solve the problem!
Here's the solution that I came up with:
How does this work?
The resulting count is 1553, which turns out to be correct.
I think this is a reasonable and readable solution. However, the solution notebook (provided by the bootcamp) reminded me of three great Python tricks I could have used to write a more elegant solution!
I'll teach you those tricks below... π
This solution uses zip to avoid manually assigning current to previous at the end of each for loop iteration:
If you're not familiar with zip, it aggregates the elements from multiple iterables and returns an iterator of tuples.
In simpler language, zip pairs together elements from different objects so that you can work with them at the same time.
In this case, we're pairing together the nums list (starting with element 0) and the nums list (starting with element 1), and then unpacking each pair of elements into previous and current during each iteration of the for loop.
This solution removes the conditional statement from the for loop:
How does this work?
Finally, we can rewrite the solution even more concisely:
This converts the previous solution into a generator expression, which is like a list comprehension that is lazily evaluated.
Then, we pass the generator object to the sum function, which adds up all of the True values (by converting them to ones).
My Python course includes 9 sets of exercises and a 7-part project. It's great for beginners and intermediate users alike.
Feel free to get in touch if you're wondering if it's right for you!
If you enjoyed this weekβs tip, please forward it to a friend! Takes only a few seconds, and it really helps me reach more people! π
See you next Tuesday!
- Kevin
P.S. I'll give you 20 seconds to guess what this video is about (YouTube)
Did someone awesome forward you this email? Sign up here to receive Data Science tips every week!
Join 25,000+ intelligent readers and receive AI tips every Tuesday!
Hi Reader, Yesterday, I posted this announcement on LinkedIn and Bluesky and X: Kevin Markham @justmarkham Dream unlocked: I'm publishing my first book! πππ It's called "Master Machine Learning with scikit-learn: A Practical Guide to Building Better Models with Python" Download the first 3 chapters right now: π https://dataschool.kit.com/mlbook π Thanks for your support π 1:47 PM β’ Sep 11, 2025 1 Retweets 5 Likes Read 1 replies This has been a dream of mine for many years, and I'm so excited...
Hi Reader, Hope youβve had a nice summer! βοΈ As for me, Iβve been finishing my first ever book! I canβt wait to tell you about it and invite you to be part of the launchβ¦ stay tuned π Today's email focuses on a single important topic: AIβs impact on your mental health π§ Read more below! π Sponsored by: Morning Brew The 5-Minute Newsletter That Makes Business Make Sense Business news doesn't have to be dry. Morning Brew gives you the biggest stories in business, tech, and finance with quick...
Hi Reader, Most of us access Large Language Models (LLMs) through a web interface, like ChatGPT or Claude. Itβs highly convenient, though there are two potential drawbacks: Cost: Some amount of usage is free, but heavy usage (or access to premium models) costs money. Privacy: Depending on the service, your chats may be used to train future models. (Or at the very least, your chats may be accessed if ordered by a court.) One solution is to run an LLM locally, which has gotten much easier with...