data structures: List Comprehensions: tests and solutions

tests

Here is the code in tests/test_list_comprehensions.py

import list_comprehensions
import unittest


class TestListComprehensions(unittest.TestCase):

    def setUp(self):
        self.a_list = []
        self.assertEqual(self.a_list, [])
        self.container = range(10)

    def test_making_a_list_from_an_iterable(self):
        for item in self.container:
            self.a_list.append(item)
        self.assertEqual(
            self.a_list,
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        )
        self.assertEqual(list(self.container), self.a_list)
        self.assertEqual(
            list_comprehensions.make_a_list(self.container),
            self.a_list
        )

    def test_making_a_list_w_a_for_loop(self):
        for item in self.container:
            self.a_list.append(item)

        self.assertEqual(
            self.a_list,
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        )
        self.assertEqual(
            list_comprehensions.for_loop(self.container),
            self.a_list
        )

    def test_making_lists_w_list_comprehensions(self):
        for item in self.container:
            self.a_list.append(item)

        self.assertEqual(
            self.a_list,
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        )
        self.assertEqual(
            [item for item in self.container],
            self.a_list
        )
        self.assertEqual(
            list_comprehensions.list_comprehension(self.container),
            self.a_list
        )

    def test_list_comprehensions_w_conditions_i(self):
        for item in self.container:
            if item % 2 == 0:
                self.a_list.append(item)

        self.assertEqual(self.a_list, [0, 2, 4, 6, 8])
        self.assertEqual(
            [item for item in self.container if item % 2 == 0],
            self.a_list
        )
        self.assertEqual(
            list_comprehensions.get_even_numbers(self.container),
            self.a_list
        )

    def test_list_comprehensions_w_conditions_ii(self):
        for item in self.container:
            if item % 2 != 0:
                self.a_list.append(item)

        self.assertEqual(self.a_list, [1, 3, 5, 7, 9])
        self.assertEqual(
            [item for item in self.container if item % 2 != 0],
            self.a_list
        )
        self.assertEqual(
            list_comprehensions.get_odd_numbers(self.container),
            self.a_list
        )

# Exceptions Encountered
# AssertionError
# NameError
# ModuleNotFoundError

solutions

Here are the solutions in list_comprehensions.py

def make_a_list(iterable):
    return list(iterable)


def for_loop(iterable):
    result = []
    for item in iterable:
        result.append(item)
    return result


def list_comprehension(iterable):
    return [item for item in iterable]


def get_even_numbers(iterable):
    return [item for item in iterable if item % 2 == 0]


def get_odd_numbers(iterable):
    return [item for item in iterable if item % 2 != 0]