[ Сборник задач ]
Тема 4. Работа со списками

[ Сборник задач ]
Тема 4. Работа со списками

Python Workbook Cover T1
  • Тип данных: list
  • Контент: Вопросы (5шт) + задачи (6шт)

Оглавление

1
Введение
Несколько слов о том, что из себя представляют списки в Python, и какие операции можно с ними выполнять.
Перейти
2
Вопросы и ответы
5 вопросов по теме "Списки" + ответы
Перейти
3
Условия задач
6 задач по теме двух уровней сложности: Базовый и *Продвинутый
Перейти
4
Решения задач
Приводим код решений указанных выше задач
Перейти
1
One

Введение

Списокпоследовательность элементов, объединенных в один контейнер. Главная особенность – они изменяемы.

Элементы списка индексируются, состоят в основном из однотипных данных, перебираются, сохраняют порядок.

Для решения заданий необходимо повторить свойства и методы списков.

Читайте также

2
Two

Вопросы по теме "Работа со списками"

3
Three

Задачи по теме "Работа со списками"

Задача 1
Дан произвольный список. Представьте его в обратном порядке.
Задача 2
Напишите функцию change(lst), которая принимает список и меняет местами его первый и последний элемент. В исходном списке минимум 2 элемента.
Задача 3
Функция to_list() принимает неограниченное количество параметров. Обработайте их так, чтобы на выходе получить список из этих элементов.
Задача 4
Николай задумался о поиске «бесполезного» числа на основании списка. Суть оного в следующем: он берет произвольный список чисел, находит самое большое из них, а затем делит его на длину списка. Студент пока не придумал, где может пригодиться подобное значение, но ищет у вас помощи в реализации такой функции useless(s).
Задача 5
Требуется создать функцию list_sort(lst), которая сортирует список чисел по убыванию их абсолютного значения.
* Задача 6
На входе имеем список строк разной длины. Необходимо написать функцию all_eq(lst), которая вернет новый список из строк одинаковой длины. Длину итоговой строки определяем исходя из самой большой из них. Если конкретная строка короче самой длинной, дополнить ее нижними подчеркиваниями с правого края до требуемого количества символов.

Расположение элементов начального списка не менять.
4
Two

Решения

Задача 1. Базовый уровень

Условие

Дан произвольный список. 
Представьте его в обратном порядке.
На практике применяется 2 способа:
1. На основании срезов (пройтись по всем элементам списка с шагом -1, т.е. в обратном порядке)
Пример – IDE

my_list = [2, 4, 8]
print(my_list[::-1])
Результат выполнения

[8, 4, 2]
2. При помощи метода списков reverse()
Пример – IDE

my_list = [2, 4, 8]
my_list.reverse()
print(my_list)
Результат выполнения

[8, 4, 2]
В первом случае исходный список не меняется.

Задача 2. Базовый уровень

Условие

Напишите функцию change(lst), которая принимает список и меняет местами его первый и последний элемент. 
В исходном списке минимум 2 элемента.
Рассмотрим 2 варианта решения.
Для первого способа понадобится воспользоваться методами pop() и insert().
Решение - IDE

def change(lst):
    new_start = lst.pop()  # Удаляем последний элемент и сохраняем его в переменную
    new_end = lst.pop(0)  # Удаляем первый элемент и сохраняем его в переменную
    lst.append(new_end)  # Добавляем к списку новый последний элемент
    lst.insert(0, new_start)  # Добавляем к списку новый первый элемент
    return lst

 
# Тесты
print(change([1, 2, 3]))
print(change([1, 2, 3, 4, 5]))
print(change(['н', 'л', 'о', 'с']))
Результат выполнения

[3, 2, 1]
[5, 2, 3, 4, 1]
['с', 'л', 'о', 'н']
Второй способ занимает меньше кода, но не всегда очевиден.
Решение - IDE

def change(lst):
    lst[0], lst[-1] = lst[-1], lst[0]
    return lst

# Тесты
print(change([1, 2, 3]))
print(change([1, 2, 3, 4, 5]))
print(change(['н', 'л', 'о', 'с']))
Результат выполнения

[3, 2, 1]
[5, 2, 3, 4, 1]
['с', 'л', 'о', 'н']

Задача 3. Базовый уровень

Условие

Функция to_list() принимает неограниченное количество параметров. 
Обработайте их так, чтобы на выходе получить список из этих элементов.
Переменная args, обозначающая неограниченное количество неименованных параметров, представлена внутри любой функции в виде кортежа. Если применить к нему функцию list(), то получим требуемый список.
Решение - Интерактивный режим

def to_list(*args):
    return list(args)

# Тесты
print(to_list(1, 5, 77))
print(to_list('Молоко', 5, '2020 год'))
print(to_list([3, 4, 7], 8.3, True, 'Строка'))
Результат выполнения

[1, 5, 77]
['Молоко', 5, '2020 год']
[[3, 4, 7], 8.3, True, 'Строка']

Читайте также

Задача 4. Базовый уровень

Условие

Николай задумался о поиске «бесполезного» числа на основании списка. 
Суть оного в следующем: он берет произвольный список чисел, находит самое большое из них, а затем делит его на длину списка. 
Студент пока не придумал, где может пригодиться подобное значение, но ищет у вас помощи в реализации такой функции useless(s).
Решение - Интерактивный режим

def useless(lst):
    return max(lst) / len(lst)

# Тесты
print(useless([1, 5, 77]))
print(useless([19, 8.3, -4, 11, 0, 5]))
print(useless([-33, -0.05, -4.18, 11.2, 13.12, 55, 7.1]))
Результат выполнения

25.666666666666668
3.1666666666666665
7.857142857142857

Задача 5. Базовый уровень

Условие

Требуется создать функцию list_sort(lst), которая сортирует список чисел по убыванию их абсолютного значения.
Для решения потребуется метод sort(), в который передается функция, определяющая абсолютное значение.
Решение - IDE

def list_sort(lst):
    lst.sort(key=lambda x: abs(x), reverse=True)
    return lst

# Тесты
print(list_sort([1, 5, 77]))
print(list_sort([19, 8.3, -4, 11, 0, 5]))
print(list_sort([-33, -0.05, -4.18, 11.2, 13.12, 55, 7.1]))
Результат выполнения

[77, 5, 1]
[19, 11, 8.3, 5, -4, 0]
[55, -33, 13.12, 11.2, 7.1, -4.18, -0.05]

* Задача 6. Продвинутый уровень

Условие

На входе имеем список строк разной длины. 
Необходимо написать функцию all_eq(lst), которая вернет новый список из строк одинаковой длины. 
Длину итоговой строки определяем исходя из самой большой из них. 
Если конкретная строка короче самой длинной, дополнить ее нижними подчеркиваниями с правого края до требуемого количества символов.
Расположение элементов начального списка не менять.
Сначала необходимо определить длину каждой строки в списке и найти максимальную. Далее дополняем символы «_» к строкам, чья длина меньше.
Решение - IDE

def all_eq(lst):
max_item = max(lst, key=lambda x: len(x))
max_len = len(max_item)
return [item.ljust(max_len, '_') for item in lst]


# Тесты
print(all_eq(['крот', 'белка', 'выхухоль']))
print(all_eq(['a', 'aa', 'aaa', 'aaaa', 'aaaaa']))
print(all_eq(['qweasdqweas', 'q', 'rteww', 'ewqqqqq']))
Результат выполнения

['крот____', 'белка___', 'выхухоль']
['a____', 'aa___', 'aaa__', 'aaaa_', 'aaaaa']
['qweasdqweas', 'q__________', 'rteww______', 'ewqqqqq____']
Как вам материал?

Читайте также