Pythonで0と1を交互に並べたリストを初期化する方法
この記事では、Pythonにおいて0と1を交互に含むリストを初期化する方法を解説します。リストの長さが指定されており、その長さに応じて0と1を交互に配置したリストを作成することを目標にします。
方法1:forループと条件分岐を使う
まずは最も基本的な方法です。以下の手順で実装します。
- 空のリストとリストの長さを初期化する。
- 長さの回数だけ繰り返し処理を行い、インデックスの偶奇に応じて0と1を交互に追加する。
- 結果を出力する。
コード例
# 空のリストを初期化
result = []
length = 7
# 繰り返し処理
for i in range(length):
# インデックスの偶奇を判定
if i % 2 == 0:
# 偶数インデックスには1を追加
result.append(1)
else:
# 奇数インデックスには0を追加
result.append(0)
# 結果を出力
print(result)上記のコードを実行すると、次のような結果が得られます。
出力結果
[1, 0, 1, 0, 1, 0, 1]
方法2:スライス代入を使う
次に、スライス([::2])を活用した効率的な方法を紹介します。以下の手順で実装します。
Noneを長さ分だけ格納したリストを初期化する。- 偶数番目の要素(
[::2])を1で、奇数番目の要素([1::2])を0で一括置換する。 - 結果を出力する。
コード例
import math # 長さとリストを初期化 length = 7 result = [None] * length # 1と0の個数を計算 _1s_count = math.ceil(length / 2) _0s_count = length - _1s_count # スライス代入で0と1を配置 result[::2] = [1] * _1s_count result[1::2] = [0] * _0s_count # 結果を出力 print(result)
このコードを実行しても、同じ結果が得られます。
出力結果
[1, 0, 1, 0, 1, 0, 1]
方法3:リスト内包表記を使う(おまけ)
さらに簡潔に書きたい場合は、リスト内包表記を使うのがおすすめです。わずか1行で同じ処理を実現できます。
コード例
length = 7 # リスト内包表記で0と1を交互に生成 result = [1 if i % 2 == 0 else 0 for i in range(length)] # 結果を出力 print(result)
出力結果
[1, 0, 1, 0, 1, 0, 1]
まとめ
今回は、Pythonで0と1を交互に含むリストを初期化する3つの方法を紹介しました。
- forループ+条件分岐:初心者にも理解しやすい基本の書き方。
- スライス代入:大量のデータを扱う場合に効率的。
- リスト内包表記:最も簡潔でPythonらしい書き方。
用途や好みに合わせて使い分けてください。記事の内容について不明な点がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonでリストの交互範囲スライスを行う方法|range()・enumerate()の活用
スライシングは、Pythonでリストのデータを分析する際に非常によく使われる基本的な手法です。しかし、分析の目的によっては、特定の範囲の値に基づいてリストを部分的に切り出す必要があります。たとえば、「4つの要素をスキップし、その次の4つの要素を取り出す」という処理を繰り返したい場合などが挙げられます。本記事では、Pythonでこのような交互範囲スライス(alternate range slicing)を実現する方法を、2つのアプローチで解説します。 方法1:range()とlen()を組み合わせる まず、forループでリスト全体の長さ分だけインデックスを走査し、割り算の判定条件を満たす要素だ
-
Pythonで0と1のバイナリリストを整数(10進数)に変換する2つの方法
Pythonでは、0と1で構成される2進数のリストを10進数の整数に変換したい場面がよくあります。例えば、センサーデータや画像処理などでビット列を扱う際に必要となる処理です。本記事では、int()関数を使う方法とビット左シフト演算子を使う方法の2つのアプローチを、サンプルコードと実行結果付きでわかりやすく解説します。 方法1:int()関数を使う int()関数は2つの引数を受け取ることができ、第2引数で入力の基数を指定できます。構文は以下のとおりです。 int(x, base=10) 数値または文字列 x から整数オブジェクトを生成して返します。 以下の例では、まずリストの各要素を文字列