Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのリスト内包表記でリスト内のすべての0を末尾に移動する方法

Pythonでは、リスト内包表記を使うことで、数値リスト内のすべての0(ゼロ)をリストの末尾に移動できます。例えば、[1, 3, 0, 4, 0, 5, 6, 0, 7] というリストの場合、処理後の結果は [1, 3, 4, 5, 6, 7, 0, 0, 0] となります。

リスト内包表記を活用すれば、この処理はわずか1行のコードで実現可能です。以下の手順に従って実装してみましょう。

処理の手順

  • 数値のリストを初期化します。

  • リスト内包表記で「0以外の要素」と「0の要素」をそれぞれ抽出し、両者を連結して新しいリストを作成します。

  • 新しいリストを出力して結果を確認します。

サンプルコード

# リストの初期化
numbers = [1, 3, 0, 4, 0, 5, 6, 0, 7]

# すべての0を末尾へ移動
new_list = [num for num in numbers if num != 0] + [num for num in numbers if num == 0]

# 新しいリストを出力
print(new_list)

上記のコードを実行すると、次のような出力が得られます。

実行結果

[1, 3, 4, 5, 6, 7, 0, 0, 0]

コードの解説

この1行のコードは、2つのリスト内包表記を + 演算子で連結したものです。

  • [num for num in numbers if num != 0]:元のリストから0以外の要素を、元の順序を保ったまま抽出します。

  • [num for num in numbers if num == 0]:元のリストから0だけを抽出します。

この2つを連結することで、0以外の要素が先頭側に、0がすべて末尾に配置された新しいリストが生成されます。なお、元のリスト numbers 自体は変更されず、結果は新しいリストとして返される点にも注目してください。

まとめ

リスト内包表記を使えば、シンプルで可読性の高いコードで0をリストの末尾に移動できます。本チュートリアルについてご不明な点や質問がある場合は、コメント欄でお気軽にお知らせください。

  1. Pythonでファイルをアルファベット順に一覧表示する方法【os.listdirとsortedの使い方】

    Pythonですべてのファイル名をアルファベット順に取得する方法 Pythonでは、os.listdir関数を使うことで、指定したディレクトリ内のファイルやフォルダの一覧を簡単に取得できます。さらに、組み込み関数であるsortedを組み合わせれば、取得したリストをアルファベット順(昇順)にソートすることが可能です。 基本的な手順 まずos.listdirでディレクトリの中身をリストとして取得し、その後sorted関数に渡して並べ替えます。以下が実際のコード例です。 >>> import os >>> list_dir = os.listdir(.) >

  2. Pythonで現在のディレクトリ内のすべてのサブディレクトリ一覧を取得する方法

    os.walkを使ってサブディレクトリを再帰的に取得するPythonで、あるディレクトリ配下のすべてのサブディレクトリを再帰的に一覧化したい場合は、標準ライブラリのos.walk関数を使うのが最も手軽です。os.walkは走査中の各ディレクトリについて「(ディレクトリのパス, サブディレクトリ名のリスト, ファイル名のリスト)」という3要素のタプルを順番に返します。タプルの最初の要素(パス)だけを取り出せば、起点となるディレクトリとその配下の全サブディレクトリのパス一覧が得られます。実際のコードは次のようになります。import os subdirs = [x[0] for x in os.