Recently, in a Python webinar, someone asked me a question about splitting lists. After researching and testing various methods, I found a few important methods to achieve this task. In this tutorial, I will explain how to split a list in Python with suitable examples and screenshots.
Split a List in Python
One of the simplest ways to split a list in Python is by using the slicing operator (:). Slicing allows you to extract a portion of a list by specifying the start and end indices. Here’s an example:
states = ["California", "Texas", "Florida", "New York", "Illinois", "Pennsylvania", "Ohio", "Georgia", "North Carolina", "Michigan"]
west_coast = states[:3]
east_coast = states[3:6]
midwest = states[6:]
print("West Coast states:", west_coast)
print("East Coast states:", east_coast)
print("Midwest states:", midwest)Output:
West Coast states: ['California', 'Texas', 'Florida']
East Coast states: ['New York', 'Illinois', 'Pennsylvania']
Midwest states: ['Ohio', 'Georgia', 'North Carolina', 'Michigan']You can see this in the screenshot below.

In this example, we split the states list into three sublists using slicing:
west_coast: Contains the first three elements of thestateslist (indices 0 to 2).east_coast: Contains the next three elements (indices 3 to 5).midwest: Contains the remaining elements (index 6 to the end).
Slicing is a quick and easy way to split a list when you know the specific indices you want to use for the split. Slicing is the simplest way to split a list in Python.
Read How to Print Lists in Python?
1. Use a Specific Value
Sometimes, you may want to split a list based on a specific value rather than using indices. For example, let’s say you have a list of US state information where each element contains the state name and its capital, separated by a tab character:
state_info = ["California\tSacramento", "Texas\tAustin", "Florida\tTallahassee", "New York\tAlbany", "Illinois\tSpringfield"]To split this list into separate lists for state names and capitals, you can use the split() method with the tab character as the delimiter:
state_names = []
state_capitals = []
for info in state_info:
name, capital = info.split("\t")
state_names.append(name)
state_capitals.append(capital)
print("State names:", state_names)
print("State capitals:", state_capitals)Output:
State names: ['California', 'Texas', 'Florida', 'New York', 'Illinois']
State capitals: ['Sacramento', 'Austin', 'Tallahassee', 'Albany', 'Springfield']You can see this in the screenshot below.

In this example, we iterate through each element of the state_info list, split it at the tab character, and append the resulting state name and capital to separate lists.
Check out How to Convert a List to a Set in Python?
2. Use List Comprehension
List comprehension is a concise and efficient way to create new lists based on existing lists. You can use list comprehension to split a list by applying a condition or transformation to each element. Here’s an example:
names = ["John Smith", "Emily Johnson", "Michael Davis", "Emma Brown", "Christopher Wilson"]
first_names = [name.split()[0] for name in names]
last_names = [name.split()[-1] for name in names]
print("First names:", first_names)
print("Last names:", last_names)Output:
First names: ['John', 'Emily', 'Michael', 'Emma', 'Christopher']
Last names: ['Smith', 'Johnson', 'Davis', 'Brown', 'Wilson']You can see this in the screenshot below.

In this example, we have a list of full names (names). We use list comprehension to split each name into its first and last name components:
first_names: We applyname.split()[0]to eachnamein thenameslist, extracting the first element of the resulting split (the first name).last_names: We applyname.split()[-1]to eachname, extracting the last element of the resulting split (the last name).
Read How to Get Unique Values from a List in Python?
Advanced List Splitting Techniques
Let us learn some important advanced list splitting techniques:
Split a List into Chunks of Equal Size
Sometimes, you may need to split a list into chunks of equal size. For example, if you have a large dataset of US cities and want to process them in smaller batches. Python’s built-in zip() function, along with the iter() function and list slicing, can be used to achieve this. Here’s an example:
cities = ["New York", "Los Angeles", "Chicago", "Houston", "Phoenix", "Philadelphia", "San Antonio", "San Diego", "Dallas", "San Jose"]
def split_into_chunks(lst, chunk_size):
return [lst[i:i + chunk_size] for i in range(0, len(lst), chunk_size)]
city_chunks = split_into_chunks(cities, 3)
print("City chunks:")
for chunk in city_chunks:
print(chunk)Output:
City chunks:
['New York', 'Los Angeles', 'Chicago']
['Houston', 'Phoenix', 'Philadelphia']
['San Antonio', 'San Diego', 'Dallas']
['San Jose']In this example, we define a function called split_into_chunks() that takes a list (lst) and a chunk size (chunk_size) as arguments. The function uses list comprehension to create a new list of sublists, where each sublist contains chunk_size elements from the original list.
We then call split_into_chunks() with the cities list and a chunk size of 3, splitting the list into chunks of 3 cities each. The resulting city_chunks list contains the sublists of cities.
Check out How to Replace Values in a List Using Python?
Split a List Based on a Condition
In some cases, you may want to split a list based on a specific condition. For example, let’s say you have a list of US states and their populations, and you want to split the list into two sublists: one for states with a population above a certain threshold and another for states below that threshold.
state_populations = [
("California", 39512223),
("Texas", 28995881),
("Florida", 21477737),
("New York", 19453561),
("Illinois", 12671821),
("Pennsylvania", 12801989),
("Ohio", 11689100),
("Georgia", 10617423),
("North Carolina", 10488084),
("Michigan", 9986857)
]
threshold = 15000000
high_population_states = [state for state in state_populations if state[1] > threshold]
low_population_states = [state for state in state_populations if state[1] <= threshold]
print("High population states:")
for state in high_population_states:
print(state)
print("\nLow population states:")
for state in low_population_states:
print(state)Output:
High population states:
('California', 39512223)
('Texas', 28995881)
('Florida', 21477737)
('New York', 19453561)
Low population states:
('Illinois', 12671821)
('Pennsylvania', 12801989)
('Ohio', 11689100)
('Georgia', 10617423)
('North Carolina', 10488084)
('Michigan', 9986857)In this example, we have a list of tuples called state_populations where each tuple contains a state name and its population. We define a population threshold of 15,000,000.
We use list comprehension to create two new lists:
high_population_states: Contains states with a population above the threshold.low_population_states: Contains states with a population less than or equal to the threshold.
We then print the resulting sublists, separating the high and low population states.
Read How to Shuffle a List in Python?
Conclusion
In this tutorial, I explored various techniques to split a list in Python. I discussed using the slicing operator (:) , using a specific value , and using list comprehension. I also covered advanced list splitting techniques, such as splitting a list into chunks of equal size and splitting a list based on a condition.
You may read:
- How to Remove Duplicates from a List in Python?
- How to Randomly Select from a List in Python?
- How to Convert a Dictionary to a List in Python?

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.