## Problem Formulation

π¬ **Programming Challenge**: Given a list of lists (nested list). Find and return the longest inner list from the outer list of lists.

Here are some examples:

`[[1], [2, 3], [4, 5, 6]]`

π`[4, 5, 6]`

`[[1, [2, 3], 4], [5, 6], [7]]`

π`[1, [2, 3], 4]`

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

π`[7, 8, 9, 10]`

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

π¬ **Bonus challenge**: Find only the *length *of the longest list in the list of lists.

Here are some examples:

`[[1], [2, 3], [4, 5, 6]]`

π`3`

`[[1, [2, 3], 4], [5, 6], [7]]`

π`3`

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

π`4`

So without further ado, let’s get started!

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

Use Pythonβs built-in `max()`

function with a key argument to find the longest list in a list of lists. Call `max(lst, key=len)`

to return the longest list in `lst`

using the built-in `len()`

function to associate the weight of each list, so that the longest inner list will be the maximum.

Here’s an example:

def get_longest_list(lst): return max(lst, key=len) print(get_longest_list([[1], [2, 3], [4, 5, 6]])) # [4, 5, 6] print(get_longest_list([[1, [2, 3], 4], [5, 6], [7]])) # [1, [2, 3], 4] print(get_longest_list([[[1], [2], [3]], [4, 5, [6]], [7, 8, 9, 10]])) # [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 longest list instead.

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

To get the length of the longest list in a nested list, use the `len(max(lst, key=len))`

function. First, you determine the longest inner list using the `max()`

function with the key argument set to the `len()`

function. Second, you pass this longest list into the `len()`

function itself to determine the maximum.

Here’s an analogous example:

def get_length_of_longest_list(lst): return len(max(lst, key=len)) print(get_length_of_longest_list([[1], [2, 3], [4, 5, 6]])) # 3 print(get_length_of_longest_list([[1, [2, 3], 4], [5, 6], [7]])) # 3 print(get_length_of_longest_list([[[1], [2], [3]], [4, 5, [6]], [7, 8, 9, 10]])) # 4

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

A Pythonic way to check the length of the longest list is to combine a generator expression or list comprehension with the `max()`

function without key. For instance, `max(len(x) for x in lst)`

first turns all inner list into length integer numbers and passes this iterable into the `max()`

function to get the result.

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

def get_length_of_longest_list(lst): return max(len(x) for x in lst) print(get_length_of_longest_list([[1], [2, 3], [4, 5, 6]])) # 3 print(get_length_of_longest_list([[1, [2, 3], 4], [5, 6], [7]])) # 3 print(get_length_of_longest_list([[[1], [2], [3]], [4, 5, [6]], [7, 8, 9, 10]])) # 4

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

π **Training**: Understanding List Comprehension in Python

## 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 longest list stored in a separate variable. After the termination of the loop, the variable contains the longest list.

Here’s a simple example:

def get_longest_list(lst): longest = lst[0] if lst else None for x in lst: if len(x) > len(longest): longest = x return longest print(get_longest_list([[1], [2, 3], [4, 5, 6]])) # [4, 5, 6] print(get_longest_list([[1, [2, 3], 4], [5, 6], [7]])) # [1, [2, 3], 4] print(get_longest_list([[[1], [2], [3]], [4, 5, [6]], [7, 8, 9, 10]])) # [7, 8, 9, 10] print(get_longest_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[0] 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 longest list, you could simply replace the last line of the function with `return len(longest)`

, and you’re done!

## Summary

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

**Method 1**:`max(lst, key=len)`

**Method 2**:`len(max(lst, key=len))`

**Method 3**:`max(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 finding the general maximum of a list of lists—it’s a slight variation!

π**Recommended Tutorial**: Python Find Longest List in Dict of Lists