リストの結合
リストとリストを結合して、1つのリストにすることができます。リストの結合には「+」演算子やextend()メソッドを使用します。
+演算子でのリストの結合
「+」演算子を利用して2つのリストを結合します。
【+演算子でのリストの結合】
リスト名3 = リスト名1 + リスト名2
#data1リストとdata2リストを結合したdata3リストを作成します。
data1 = [10,20,30,40,50]
data2 = [60,70,80,90,100]
data3 = data1 + data2
print("data1は",data1)
print("data2は",data2)
print("data3は",data3)
data1は [10, 20, 30, 40, 50]
data2は [60, 70, 80, 90, 100]
data3は [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
要素数が5個のdata1と、要素数が5個のdata2を結合して、要素数が10個のdata3が作成されているのが確認できます。
extend()でのリストの結合
extend()メソッドでは一方のリストにもう一方のリストを結合(拡張)させます。
【extend()でのリストの結合】
リスト1.extend(リスト2)
#data1リストにdata2リストを結合します。
data1 = [10,20,30,40,50]
data2 = [60,70,80,90,100]
print("結合前のdata1は",data1)
print("結合前のdata2は",data2)
print()
data1.extend(data2)
print("結合後のdata1は",data1)
print("結合後のdata2は",data2)
結合前のdata1は [10, 20, 30, 40, 50]
結合前のdata2は [60, 70, 80, 90, 100]
結合後のdata1は [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
結合後のdata2は [60, 70, 80, 90, 100]
要素数が5個のdata1の後ろに、要素数が5個のdata2を結合して、要素数が10個のdata1が作成されています。data2は変化しません。
リストのスライス指定
リストではスライス(slice)という機能を使うことでデータの範囲を指定して取り出すことができます。基本的なスライス方法は下記になります。
【スライス指定方法】
リスト名[開始値:終了値:間隔]
スライス指定は記述方法で次のように様々な指定方法が可能です。
#インデックスが0~4の範囲を指定
リスト名[0:5]
#インデックスの5以降を指定
リスト名[5:]
#間隔2を開けて値を指定
リスト名[::2]
#間隔-1(逆順)で値を指定
リスト名[::-1]
#スライスでデータ範囲を指定して表示
data = [10,20,30,40,50,60,70,80,90,100]
print(data[0:5])
print(data[5:])
print(data[::2])
print(data[::-1])
[10, 20, 30, 40, 50]
[60, 70, 80, 90, 100]
[10, 30, 50, 70, 90]
[100, 90, 80, 70, 60, 50, 40, 30, 20, 10]
1行目は、最初から5番目の要素までを取り出しています。
2行目は、6番目(インデックスで5)から最後までの要素を取り出しています。
3行目は、ひとつおき(間隔2)で要素を取り出しています。
4行目は、ー1間隔(逆から)で全要素を取り出しています。
リストの逆順
reversed()命令やreverse()メソッドを使用することで、逆並びでデータを取り出したり、リストを逆順に変換したりできます。
リストの逆順指定 reversed()
reversed()関数を使用すると繰り返し処理のfor文で逆順でデータを取り出すことができます。注意点としてreversed()関数は元のリストを逆順にはしない、という事があります。
また、reversed()関数で逆順にしたリストをprint()関数では表示できません。
【リストの逆順指定】
reversed(リスト名)
#reversed()関数をfor文で使用してデータを逆順に取り出します。
data1 = [10,20,30,40,50,60,70,80,90,100]
print("実行前のデータ=",data1)
for d in reversed(data1):
print(d,end=", ")
print()
print("実行後のデータ=",data1)
print(reversed(data1))
実行前のデータ= [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
100, 90, 80, 70, 60, 50, 40, 30, 20, 10,
実行後のデータ= [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
<list_reverseiterator object at 0x00C663E8>
for文内で、リストをreversed()関数で逆順指定すると値を逆から取り出しすることができます。実行結果の4行目で分かるように、reversed()関数を使用しても元のデータが逆順になるわけではありません。
また備考として、reversed()関数で逆順にしたリストをprint関数では表示することができません。実行すると5行目のようなメッセージが表示されます。
リストの逆順変換 reverse()
reverse()メソッドを使用するとリストを逆順に変換することができます。
【リストの逆順変換】
リスト名.reverse()
#リストを逆順に変換します。
data1 = [10,20,30,40,50,60,70,80,90,100]
print("変換前のデータ=",data1)
data1.reverse()
print("変換後のデータ=",data1)
変換前のデータ= [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
変換後のデータ= [100, 90, 80, 70, 60, 50, 40, 30, 20, 10]
reverse()メソッドは、元のデータの順番を入れ替えます。実行結果の2行目のように、リスト内のデータの並び順が逆になっています。