リスト内包表記
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]
。つまり、リスト内包表記の構文は以下の通りです:
- 内包表記は開き括弧と閉じ括弧
[]
の中に入ります
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
行は 名前 姓
のペアが含まれます。プログラムは最初に初期リストを出力し、その後に名前だけのリストを出力する必要があります。
入力 | 出力 |
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