To join and replace all strings in a list
between start index 1 and end index 5, use the one-liner
lst[1:5] = [''.join(lst[1:5])]. This solution is based on slice assignment that selects the slice you want to replace on the left and the values to replace it on the right side of the assignment.
Problem: Given a list of strings. How to join all strings in a given list slice and replace the slice with the joined string?
Example:You start with the following list:
lst = ['i', 'l', 'o', 'v', 'e', 'u']
You want to join the slice
['l', 'o', 'v', 'e'] with start index 1 and end index 4 (included) and replace it in the list to obtain the result:
# Output: ['i', 'love', 'u']
You can get a quick overview of all three methods in the following interactive Python shell. If you’re short on time—method 1 using slice assignment is the most Pythonic solution!
Exercise: Modify the code so that only elements with start index 2 and end index 4 (included) are replaced by the joined string!
Method 1: Slice Assignment
Slice assignment is a little-used, beautiful Python feature to replace a slice with another sequence. Select the slice you want to replace on the left and the values to replace it on the right side of the equation.
Here’s how you can join and replace all strings in a list slice (between indices 1 and 5) in a single line of Python code:
# Method 1: Slice Assignments lst = ['i', 'l', 'o', 'v', 'e', 'u'] lst[1:5] = [''.join(lst[1:5])] print(lst) # ['i', 'love', 'u']
lst[1:5] = [''.join(lst[1:5])] performs the following steps:
- Select the slice to be replaced on the left-hand side of the equation with
lst[1:5]. Read more about slicing on my Finxter blog tutorial.
- Create a list that replaces this slice on the right-hand side of the equation with
- Select the slice of string elements to be joined together (
'l', 'o', 'v', 'e') with
- Pass this slice into the join function to create a new string with all four characters
- This string replaces all four selected positions in the original list.
If you love the power of Python one-liners, check out my new book with the same name “Python One-Liners” on Amazon (published in 2020 with San Francisco’s high-quality NoStarch publishing house).
Method 2: List Concatenation + Slicing + Join
A simpler but quite readable method is to use simple list concatenation. Read more on my Finxter blog tutorial to master all different ways to concatenate lists in Python.
# Method 2: List Concatenation + Join lst = ['i', 'l', 'o', 'v', 'e', 'u'] lst = lst[:1] + [''.join(lst[1:5])] + lst[5:] print(lst) # ['i', 'love', 'u']
This approach uses three slicing calls to select (or create) three lists. Then, it glues them together using the
+ operator. This approach has the slight disadvantage that a new list is created in memory (rather than working on the old list). Thus, it’s slightly less memory-friendly as the first method.
Method 3: Naive
This method is what a non-Python coder (maybe coming from Java or C++) would use. It’s NOT the recommended way though.
# Method 3: Naive lst = ['i', 'l', 'o', 'v', 'e', 'u'] new = '' for i in range(1,5): new += lst[i] lst = lst[:1] + [new] + lst[5:] print(lst) # ['i', 'love', 'u']
Instead of selecting the slice of strings to be joined using slicing, the coder creates a string variable
new and adds one character at-a-time. This is very inefficient as many different strings are created—each time one adds one more character to the string.
Where to Go From Here?
Enough theory, let’s get some practice!
To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?
Practice projects is how you sharpen your saw in coding!
Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?
Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.