Генераторы списков

Создавать списки в 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].
Итак, синтаксис для генераторов списков следующий:
  1. Генератор находится внутри открывающих и закрывающих скобок [].
  1. Цикл for перебирает значения.
  1. Элементы списка стоят перед ключевым словом 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]
hi
my
name
is
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue