リストの要素を入れ替える

広告
eyecatch

リストは作成したあとで要素を別の要素に入れ替えることができます。ここでは作成済みのリストの要素を別の値を持つ要素を入れ借る方法について解説します。

特定の要素を入れ替える

リストの中の指定した要素を別の値を持つ要素と入れ替えるには、入れ替える要素のインデックスを指定して次のように要素に新しい値を代入してください。

リスト[インデックス] = 値

次の例では 2 番目の要素(インデックスは 0 から始まるので 1 )の値を別の値に変更しています。

mylist = ["Apple", "Peach", "Orange"]
print(mylist)
--> ['Apple', 'Peach', 'Orange']

# 2 番目の要素を別の値と入れ替える
mylist[1] = "Grape"
print(mylist)
--> ['Apple', 'Grape', 'Orange']

リストは変更可能なオブジェクト(ミュータブル(mutable)なオブジェクト)なので、同じオブジェクトのまま要素を別の要素に入れ替えたりすることができます。その為、要素を別の値を持つ要素に変更してもオブジェクトは同じままです。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample4-1.py という名前で保存します。

colorlist = ["Blue", "Red", "Green"]

print(colorlist)
print("オブジェクトの id = " + str(id(colorlist)))
print("¥n")

colorlist[1] = "White"
print(colorlist)
print("オブジェクトの id = " + str(id(colorlist)))

特定の要素を入れ替える(1)

その後で、次のように実行してください。

python sample4-1.py

特定の要素を入れ替える(2)

指定した要素を別の値を持つ要素と入れ替えることができました。また入れ替えたあともリストのオブジェクトは同じであることが確認できました。

スライス機能を使って複数の要素をまとめて入れ替える

スライス機能を使うことで複数の要素をまとめて入れ替えることがができます。開始インデックスと終了インデックスを指定して範囲内にある要素をまとめて入れ替えます。

リスト[開始インデックス:終了インデックス] = リストなど

範囲を指定する方法ですが、範囲の最初の要素のインデックスを開始インデックスに指定し、範囲の最後の要素のインデックスに +1 した値を終了インデックスとして指定します。

既存の要素に置き換わる新しい要素はリストなどのイテラブルなオブジェクトを指定します。イテラブルなオブジェクトとは文字列やリスト、タプル、辞書などです。なお文字列を指定する場合、 例えば "ABC" と指定した場合は ["A", "B", "C"] のように 1 文字毎の要素として扱われます。

次の例では 2 番目の要素から 4 番目の要素(開始インデックスは 1 、 終了インデックスは 4 となります)を別のリストで入れ替えます。

mylist = ["A", "B", "C", "D", "E", "F"]
print(mylist)
--> ["A", "B", "C", "D", "E", "F"]

# 2 番目から 4 番目の要素を入れ替える
mylist[1:4] = ["1", "2", "3"]
print(mylist)
--> ["A", "1", "2", "3", "E", "F"]

入れ借る要素の数と、新しい要素の数は同じでなくても構いません。多くても少なくても大丈夫です。例えば少なくした場合は、リストの要素の数が少なくなることになります。

mylist = ["A", "B", "C", "D", "E", "F"]
print(mylist)
--> ["A", "B", "C", "D", "E", "F"]

# 2 番目から 4 番目の要素を入れ替える
mylist[1:4] = ["1", "2"]
print(mylist)
--> ["A", "1", "2", E", "F"]

スライスでは開始インデックスや終了インデックスを省略した記述方法や、ステップ数を指定することもできます。(詳しくは「スライスを使って文字列の指定範囲の部分文字列を取得する」を参照されてください)。注意点としてステップ数を利用する場合は、入れ替える要素の数と新しい要素の数は同じでなくてはなりません。

mylist = ["A", "B", "C", "D", "E", "F"]
print(mylist)
--> ["A", "B", "C", "D", "E", "F"]

# 2 番目から 6 番目の要素を 2 つ毎に入れ替える
mylist[1:7:2] = ["1", "2", "3"]
print(mylist)
--> ["A", "1", "C", "2", "E", "3"]

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample4-2.py という名前で保存します。

colorlist = ["Blue", "Red", "Green", "White"]
print(colorlist)
colorlist[1:3] = ["Yellow", "Pink", "Black"]
print(colorlist)
colorlist[1:5:2] = ["Purple", "Gray", "Brown"]
print(colorlist)

スライス機能を使って複数の要素をまとめて入れ替える(1)

その後で、次のように実行してください。

python sample4-2.py

スライス機能を使って複数の要素をまとめて入れ替える(2)

スライス機能を使って複数の要素をまとめて別の要素と入れ替えることができました。

-- --

リストの要素を別の値の要素と入れ替える方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。