0Pricing
Coding Interview Prep · レッスン

内包表記で配列を高速に作る

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CP のためのリスト、インデックス、スライス
  2. 内包表記で配列を高速に作る
  3. Min、Max、Sum、累積合計
  4. 値だけでなくインデックスを見つける
← Coding Interview Prepに戻る