Задачка: Разделение на подсписки

Напишите функцию split_into_sublists(), которая принимает на вход список элементов и число chunk_size, и возвращает список из подсписков, каждый размером chunk_size. Если в конце остается менее chunk_size элементов, они также должны быть включены в последний подсписок.

Напишите также тесты с использованием pytest, чтобы проверить правильность работы функции на разных входных данных.

Пишите ваши варианты в комментариях.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
# split_into_sublists.py
def split_into_sublists(input_list, chunk_size):
    return [input_list[i:i+chunk_size] for i in range(0, len(input_list), chunk_size)]

# test_split_into_sublists.py
import pytest
from split_into_sublists import split_into_sublists

def test_regular_list():
    assert split_into_sublists([1, 2, 3, 4, 5, 6, 7], 3) == [[1, 2, 3], [4, 5, 6], [7]]
    assert split_into_sublists(["a", "b", "c", "d", "e", "f"], 2) == [["a", "b"], ["c", "d"], ["e", "f"]]

def test_empty_list():
    assert split_into_sublists([], 3) == []

def test_chunk_size_greater_than_list_length():
    assert split_into_sublists([1, 2, 3], 5) == [[1, 2, 3]]

def test_chunk_size_equal_to_list_length():
    assert split_into_sublists(["apple", "banana", "cherry"], 3) == [["apple", "banana", "cherry"]]

def test_mixed_elements():
    assert split_into_sublists([1, "a", 2, "b", 3, "c"], 2) == [[1, "a"], [2, "b"], [3, "c"]]

В данной задаче функция split_into_sublists() принимает на вход список элементов и число, которое определяет размер подсписков. А возвращает список, состоящий из подсписков заданного размера. Последний подсписок может включать в себя дополнительно оставшиеся элементы. Это производится при помощи взятия срезов входящего списка. Тесты проверяют правильность работы функции для различных входных данных.

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *