内包表記で配列を高速に作る
1 行で入力を読み取り、形を整えます
「内包表記で配列を高速に作る」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。
1行でリストを作る
リスト内包表記を使うと、ループから1つの式でリストを作れます。短く書けて高速であり、データ整形の定番としてコンテストでよく使われます。
squares = [i * i for i in range(5)]基本形
基本形は [expr for item in iterable] です。左側の式は、ループが取り出す各 item に対して1回ずつ実行されます。
doubles = [x * 2 for x in nums]整数の行を読み込む
コンテストで最もよくある入力行は、入力を分割して各トークンを変換する形です。これはテキストを整数に変換する処理を、読みやすく1ステップで行います。
nums = [int(x) for x in input().split()]map() も同じ処理をする
map(int, ...) は各トークンに int を適用します。繰り返し使える値のリストにするには、list(...) で包んで実体化してください。
nums = list(map(int, input().split()))構築しながらフィルタリングする
最後にif条件を追加すると、条件を満たす要素だけを残せます。ここでは偶数だけが構築結果に残ります。
evens = [x for x in nums if x % 2 == 0]変換とフィルタリングを同時に行う
変換とフィルタリングは同時に行えます。末尾のifで要素を選別しながら、左側で残す要素を変更します。
out = [x * x for x in nums if x > 0]0で埋めた配列を作る
固定サイズの配列が必要ですか?[0] * nを使うとn個の0をすぐに作成でき、カウンターやDPテーブルに最適です。
dp = [0] * n内側のリストの繰り返しに注意する
2次元グリッドには内包表記を使います。[[0] * c for _ in range(r)]は独立した行を作りますが、[[0] * c] * rでは1つの行を共有します。
grid = [[0] * c for _ in range(r)]enumerateでインデックスを扱う
位置も必要な場合は、enumerateを使ってループします。各ステップでインデックスと値の両方をきれいに取得できます。
pairs = [(i, v) for i, v in enumerate(nums)]行列全体を読み込む
読み込みとループを組み合わせると、数値のr行をまとめて取り込み、短い2行でグリッド全体を構築できます。
grid = [list(map(int, input().split()))
for _ in range(r)]setとdictの書き方
同じ構文でsetとdictも作れます。波かっこを使います。{x for x in nums}は重複を除去し、key:valueの組でマップを構築します。
seen = {x for x in nums}クイックチェック
空白で区切られた整数の1行を読み込むイディオムを選んでください。
まとめ:すばやく構築する
これで、配列の構築、フィルタリング、形状変更を1行で行い、行列全体もすばやく読み込めるようになりました。内包表記を使うと、入力解析を短くバグの少ないコードにできます。💡
よくある質問
「内包表記で配列を高速に作る」レッスンは無料ですか?
はい。「内包表記で配列を高速に作る」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。
「内包表記で配列を高速に作る」で何を学びますか?
1 行で入力を読み取り、形を整えます ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Coding Interview Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「内包表記で配列を高速に作る」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCoding Interview Prepレッスンでコードを書いて実行できますか?
はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。