# Python Find Shortest List in List

## Problem Formulation

💬 Programming Challenge: Given a list of lists (nested list). Find and return the shortest inner list from the outer list of lists.

Here are some examples:

• `[, [2, 3], [4, 5, 6]]` 👉 ``
• `[[1, [2, 3], 4], [5, 6], ]` 👉 ``
• `[[, , ], [4, 5, ], [7, 8, 9, 10]]` 👉 `[, , ]`

Also, you’ll learn how to solve a variant of this challenge.

💬 Bonus challenge: Find only the length of the shortest list in the list of lists.

Here are some examples:

• `[, [2, 3], [4, 5, 6]]` 👉 `1`
• `[[1, [2, 3], 4], [5, 6], ]` 👉 `1`
• `[[, , ], [4, 5, ], [7, 8, 9, 10]]` 👉 `3`

So without further ado, let’s get started!

## Method 1: min(lst, key=len)

Use Python’s built-in `min()` function with a key argument to find the shortest list in a list of lists. Call `min(lst, key=len)` to return the shortest list in `lst` using the built-in `len()` function to associate the weight of each list, so that the shortest inner list will be the minimum.

Here’s an example:

```def get_shortest_list(lst):
return min(lst, key=len)

print(get_shortest_list([, [2, 3], [4, 5, 6]]))
# 

print(get_shortest_list([[1, [2, 3], 4], [5, 6], ]))
# 

print(get_shortest_list([[, , ], [4, 5, ], [7, 8, 9, 10]]))
# [, , ]
```

A beautiful one-liner solution, isn’t it? 🙂 Let’s have a look at a slight variant to check the length of the shortest list instead.

## Method 2: len(min(lst, key=len))

To get the length of the shortest list in a nested list, use the `len(min(lst, key=len))` function. First, you determine the shortest inner list using the `min()` function with the key argument set to the `len()` function. Second, you pass this shortest list into the `len()` function itself to determine the minimum.

Here’s an analogous example:

```def get_length_of_shortest_list(lst):
return len(min(lst, key=len))

print(get_length_of_shortest_list([, [2, 3], [4, 5, 6]]))
# 1

print(get_length_of_shortest_list([[1, [2, 3], 4], [5, 6], ]))
# 1

print(get_length_of_shortest_list([[, , ], [4, 5, ], [7, 8, 9, 10]]))
# 3
```

## Method 3: min(len(x) for x in lst)

A Pythonic way to check the length of the shortest list is to combine a generator expression or list comprehension with the `min()` function without key. For instance, `min(len(x) for x in lst)` first turns all inner list into length integer numbers and passes this iterable into the `min()` function to get the result.

Here’s this approach on the same examples as before:

```def get_length_of_shortest_list(lst):
return min(len(x) for x in lst)

print(get_length_of_shortest_list([, [2, 3], [4, 5, 6]]))
# 1

print(get_length_of_shortest_list([[1, [2, 3], 4], [5, 6], ]))
# 1

print(get_length_of_shortest_list([[, , ], [4, 5, ], [7, 8, 9, 10]]))
# 3
```

A good training effect can be obtained by studying the following tutorial on the topic—feel free to do so!

## Method 4: Naive For Loop

A not so Pythonic but still fine approach is to iterate over all lists in a `for` loop, check their length using the `len()` function, and compare it against the currently shortest list stored in a separate variable. After the termination of the loop, the variable contains the shortest list.

Here’s a simple example:

```def get_shortest_list(lst):
shortest = lst if lst else None
for x in lst:
if len(x) < len(shortest):
shortest = x
return shortest

print(get_shortest_list([, [2, 3], [4, 5, 6]]))
# 

print(get_shortest_list([[1, [2, 3], 4], [5, 6], ]))
# 

print(get_shortest_list([[, , ], [4, 5, ], [7, 8, 9, 10]]))
# [, , ]

print(get_shortest_list([]))
# None
```

So many lines of code! 😅 At least does the approach also work when passing in an empty list due to the ternary operator used in the first line.

`lst if lst else None`

If you need a refresher on the ternary operator, you should check out our blog tutorial.

👉 Training Tutorial: The Ternary Operator — A Powerful Python Device

Note: If you need the length of the shortest list, you could simply replace the last line of the function with `return len(shortest)` , and you’re done!

## Summary

You have learned about four ways to find the shortest list and its length from a Python list of lists (nested list):

• Method 1: `min(lst, key=len)`
• Method 2: `len(min(lst, key=len))`
• Method 3: `min(len(x) for x in lst)`
• Method 4: Naive For Loop

I hope you found the tutorial helpful, if you did, feel free to consider joining our community of likeminded coders—we do have lots of free training material!

👉 Also, check out our tutorial on How to Find the Minimum of a List of Lists in Python?—it’s a slight variation!

👉Recommended Tutorial: Python Find Longest List in Dict of Lists