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を効率的に分離できます。条件に合致する要素を抽出する処理が直感的に書けるため、可読性の高いコードになります。
-
Pythonのリストをスタックとキューとして使う方法を徹底解説
本記事では、Python 3.x(およびそれ以前のバージョン)におけるスタック(Stack)とキュー(Queue)という基本的なデータ構造について解説します。それぞれのデータ構造の仕組みや操作方法を、実際のコード例とともにわかりやすく学んでいきましょう。 本記事で扱う主なトピックは以下の通りです。 挿入操作(Push / Enqueue) 削除操作(Pop / Dequeue) 表示・走査(トラバース)操作 前提知識:リストとリスト操作の基礎関連するデータ構造:リスト操作 スタック(Stack)とは スタックでは、オブジェクトが積み重なるように格納され、取り出す際には到着した順序とは逆の順
-
Pythonのリストと配列(array)の違いとは?使い分けのポイントを解説
Pythonのリストと配列、何が違うのか?Pythonでデータを扱う際、「リスト(list)」と「配列(array.array)」はどちらもよく使われるデータ構造ですが、それぞれ特徴が大きく異なります。この記事では、両者の違いと使い分けのポイントをわかりやすく解説します。リスト(list):柔軟性が高い万能型Pythonのリストは非常に柔軟なデータ構造です。最大の特徴は、異なる型のデータを混在させて格納できる点にあります。例えば、以下のように整数・文字列・ネストしたリストなどを自由に組み合わせられます。[1, a, [1, 2], string]また、リストへの要素追加(append)は償却定