Skip to content

Instantly share code, notes, and snippets.

@hipertracker
Created January 12, 2020 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hipertracker/c557c111a4715d3fe9239347b0ebd459 to your computer and use it in GitHub Desktop.
Save hipertracker/c557c111a4715d3fe9239347b0ebd459 to your computer and use it in GitHub Desktop.
Missing list flatten function in Python
def flatten(items: list, result: list = None) -> list:
if result is None:
result = []
for item in items:
if isinstance(item, list):
flatten(item, result)
else:
result.append(item)
return result
from django.test import TestCase
from .flatten import flatten
class FlattenTestCase(TestCase):
def test_flatten_items(self):
given = flatten([1, 2, 4, 5])
expected = [1, 2, 4, 5]
self.assertEqual(expected, given)
def test_flatten_lists(self):
given = flatten([[1, 2], [4, 5]])
print("GIVEN", given)
expected = [1, 2, 4, 5]
self.assertEqual(expected, given)
def test_flatten_mixed_values(self):
given = flatten([[1, 2], 12, [4, 5]])
expected = [1, 2, 12, 4, 5]
self.assertEqual(expected, given)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment