リスト内包表記

Pythonでリストを作成するのはとても簡単です。[0] * 50 を使えば、0で埋められた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 行は 名前 姓 のペアが含まれます。
プログラムは最初に初期リストを出力し、その後に名前だけのリストを出力する必要があります。
入力
出力
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