Создавать списки в Python очень просто. Можно использовать [0] * 50, чтобы создать список из 50 элементов, заполненных нулями. Другой способ, который предоставляет более тонкий контроль над элементами, — это итерирование с помощью цикла for и добавление элементов по одному. Однако есть еще один способ создания списка через генератор списка. Если мы хотим создать список квадратов чисел от 1 до 100, мы можем сделать это так:
squares = []
for n in range(1, 100):
squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Обе эти программы выведут одинаковый результат и создадут один и тот же список квадратов — [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Итак, синтаксис для генераторов списков следующий:
Генератор находится внутри открывающих и закрывающих скобок [].
Цикл for перебирает значения.
Элементы списка стоят перед ключевым словом for и могут зависеть от переменной цикла for.
В случае отправки приглашений на день рождения представьте, что вы создали список имен, которых мы хотели бы пригласить, но случайно сделали их все в нижнем регистре. Теперь мы можем использовать генератор списка, чтобы исправить это:
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = []
for name in invites:
fixed.append(name.title())
print(fixed)
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Обе эти программы выведут ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].
Задача
Даны n имен и фамилий, требуется извлечь имена и напечатать как исходный список, так и список, содержащий только имена.
Первая строка ввода содержит одно целое число n. Следующие n строк содержат пары name surname.
Программа должна сначала вывести исходный список, а затем список, содержащий только имена.
Ввод
Вывод
3
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall
Peter
Curtis
Подсказка
Вы можете использовать .split()[0], чтобы получить первый элемент после разделения строки по пробелам.
Вы даже можете печатать с помощью генераторов списков:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]