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

Pythonで配列リスト内の0と1を分離する方法

リスト内包表記(List Comprehension)はPythonで広く使われている人気のテクニックです。ここでは、この手法を活用して配列内の0と1を分離してみましょう。

まず、ユーザーから入力を受け取って配列を作成します。配列の要素は0と1がランダムな順序で含まれているものとします。そして、0を配列の左側へ、1を右側へと分離させます。

具体的には、配列を走査しながら要素を2つの異なるリストに振り分けます。片方のリストには0だけを、もう片方のリストには1だけを格納し、最後にその2つのリストを連結することで目的の結果を得られます。

実行例

入力: a=[0,1,1,0,0,1]
出力: [0,0,0,1,1,1]

アルゴリズム

seg0s1s(A)
/* Aはユーザー入力の配列であり、Aの要素は0と1の組み合わせとする */
ステップ1: まず配列全体を走査する。
ステップ2: 配列の各要素を確認する。要素が0であれば左側に、
           1であれば右側に配置する。
ステップ3: 分けた2つのリストを連結する。

サンプルコード

#  配列リスト内の0と1を分離する
#  Segregate 0's and 1's in an array list
def seg0s1s(A):
   n = ([i for i in A if i==0] + [i for i in A if i==1])
   print(n)

# ドライバープログラム
if __name__ == "__main__":
   A=list()
   n=int(input("配列のサイズを入力してください ::"))
   print("数値を入力してください ::")
   for i in range(int(n)):
      k=int(input(""))
      A.append(int(k))
   print("新しい配列リスト ::")    
   seg0s1s(A)

実行結果

配列のサイズを入力してください ::6
数値を入力してください ::
1
0
0
1
1
0
新しい配列リスト ::
[0, 0, 0, 1, 1, 1]

このように、リスト内包表記を使えばわずか数行のコードで0と1を効率的に分離できます。条件に合致する要素を抽出する処理が直感的に書けるため、可読性の高いコードになります。

  1. Pythonのリストをスタックとキューとして使う方法を徹底解説

    本記事では、Python 3.x(およびそれ以前のバージョン)におけるスタック(Stack)とキュー(Queue)という基本的なデータ構造について解説します。それぞれのデータ構造の仕組みや操作方法を、実際のコード例とともにわかりやすく学んでいきましょう。 本記事で扱う主なトピックは以下の通りです。 挿入操作(Push / Enqueue) 削除操作(Pop / Dequeue) 表示・走査(トラバース)操作 前提知識:リストとリスト操作の基礎関連するデータ構造:リスト操作 スタック(Stack)とは スタックでは、オブジェクトが積み重なるように格納され、取り出す際には到着した順序とは逆の順

  2. Pythonのリストと配列(array)の違いとは?使い分けのポイントを解説

    Pythonのリストと配列、何が違うのか?Pythonでデータを扱う際、「リスト(list)」と「配列(array.array)」はどちらもよく使われるデータ構造ですが、それぞれ特徴が大きく異なります。この記事では、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list):柔軟性が高い万能型Pythonのリストは非常に柔軟なデータ構造です。最大の特徴は、異なる型のデータを混在させて格納できる点にあります。例えば、以下のように整数・文字列・ネストしたリストなどを自由に組み合わせられます。[1, a, [1, 2], string]また、リストへの要素追加(append)は償却定