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

Pythonでリスト内の奇数要素を2回繰り返して追加する方法


この記事では、奇数を要素として含むリストを受け取り、その奇数要素を同じリストの中で繰り返し(2回)追加する方法を解説します。例えば、ある奇数がリスト内に2回出現している場合、処理後にはその奇数が4回出現することになります。

この要件を実現するアプローチは複数あります。代表的なのは、forループとin条件を組み合わせる方法や、itertoolsモジュールを活用する方法です。なお、要素が奇数かどうかの判定は、各要素を2で割った余りを確認することで行います。

実装例

from itertools import chain
import numpy as np

data_1 = [2,11,5,24,5]
data_2=[-1,-2,-9,-12]
data_3= [27/3,49/7,25/5]
odd_repeat_element_3=[]

# forとinを使用する方法
odd_repeat_element = [values for i in data_1 for values in (i, )*(i % 2 + 1)]

print('与えられた入力値:', data_1)
print('奇数を繰り返したリスト:', odd_repeat_element)

# itertoolsのchainを使用する方法
odd_repeat_element_2 = list(chain.from_iterable([n]
if n % 2 == 0 else [n]*2 for n in data_2))

print('\n与えられた入力値:', data_2)
print('奇数を繰り返したリスト:', odd_repeat_element_2)

# numpyのrepeatとextendを使用する方法
for m in data_3:
    (odd_repeat_element_3.extend(np.repeat(m, 2, axis = 0))
if m % 2 == 1 else odd_repeat_element_3.append(m))

print('\n与えられた入力値:', data_3)
print('奇数を繰り返したリスト:', odd_repeat_element_3)

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

与えられた入力値: [2, 11, 5, 24, 5]
奇数を繰り返したリスト: [2, 11, 11, 5, 5, 24, 5, 5]

与えられた入力値: [-1, -2, -9, -12]
奇数を繰り返したリスト: [-1, -1, -2, -9, -9, -12]

与えられた入力値: [9.0, 7.0, 5.0]
奇数を繰り返したリスト: [9.0, 9.0, 7.0, 7.0, 5.0, 5.0]

各手法のポイント

1. リスト内包表記とタプルの繰り返し

(i, ) * (i % 2 + 1) の部分がポイントです。i が奇数の場合、i % 2 + 1 は 2 になるためタプル (i,) が2回繰り返されます。一方、偶数の場合は 1 になるため、要素はそのまま1回だけ現れます。

2. itertools.chain.from_iterable を使う方法

各要素 n に対して、偶数なら [n]、奇数なら [n] * 2 を生成し、chain.from_iterable() でそれらを連結・平坦化して、1つのリストにまとめています。

3. numpy.repeat と extend を使う方法

要素が奇数の場合は np.repeat(m, 2) で2回繰り返した配列を作成し、extend() でリストへ追加します。偶数の場合は append() を使って、そのまま1つだけ追加します。


  1. Pythonのappend()とextend()の違いをわかりやすく解説

    Pythonのリストに要素を追加する際によく使われるメソッドが append() と extend() です。どちらもリストの要素数を増やすために使用しますが、動作は大きく異なります。この記事では、それぞれの特徴と違いを具体例とともに解説します。 append()メソッドとは append() は、渡された要素をリストの末尾に「1つの要素」として追加します。引数として渡せるのは1つだけです。仮に引数がリストであっても、そのリスト全体が「1つの要素」として元のリストに加わり、要素数は1だけ増えます。 構文: list_name.append(値) ※ 引数は1つのみ append()の使用

  2. Pythonのループでリストに値を追加・代入する方法【append()活用】

    Pythonのループを使ってリストに値を追加する方法 Pythonの組み込みクラスであるlistには、要素を末尾に追加するためのappend()メソッドが用意されています。このメソッドとinput()関数、さらに無限ループ(while True)を組み合わせることで、ユーザーが入力した値を次々とリストに格納することができます。 以下のサンプルコードでは、ユーザーが何も入力せずにEnterキーを押すまで、繰り返し項目の入力を受け付け、その都度リストへ追加していきます。 L = [] while True: item = input(新しい項目を入力してください: ) if ite