リストの作成

リストは、複数の要素から構成され、要素が順に並んでいるデータ構造の一種です。多くのプログラミング言語でサポートされている配列のような構造です。リスト型のオブジェクトは次のように作成します。

[要素1, 要素2, ...]

作成されたリストオブジェクトは変数に代入することができます。

変数名 = [要素1, 要素2, ...]

例えば、具体的には以下のように記述します:

lst = []                  #空のリストオブジェクトを変数lstに代入する
lst = [18, 35, 27, 42]    #リストオブジェクト [18, 35, 27, 42] を変数 lst に代入する

リストの要素にアクセスする

リストの各要素に対してデータの読み書きを行うためには、変数名の後に [ ] で囲ったインデックスを指定します。インデックスとは、リストの要素を識別するための通し番号です。

変数名[ インデックス ]

リストのインデックスは 0 から始まります(これを、 0オリジン と言います)。また、インデックスは負の値を指定することもできます。たとえば、[-1] は最後の要素、[-2] は最後から二番目の要素を指します。

具体的には以下のように記述します:

lst = [3, 4, 8, 6] # リストlstの初期化
a = lst[2]         # a は 8 になる。lst のインデックス[2] の要素(先頭から3番目の要素)を取得し変数a に代入。
b = lst[-1]        # b は 6 になる

リストの要素を変更するには、インデックスを指定して取得した要素に対して新しい要素を代入します。

変数名[ インデックス ] = 要素

具体的には以下のように記述します:

lst = [3, 4, 8, 6]
lst[1] = 0
print(lst)   # [3, 0, 8, 6]

リストに要素を追加する

リスト型で用意されている append メソッドを使うことで、リストの最後に要素を追加することができます。

リストオブジェクト.append( 要素 )

具体的には以下のように記述します:

lst = [3, 4, 8, 6]
lst.append(10)
print(lst)   # [3, 4, 8, 6, 10]

また、リスト型で用意されている extend メソッドを使うことで、リストの最後に別のリストの要素を追加することができます。

リストオブジェクト.extend( リストオブジェクト )

具体的には以下のように記述します:

lst = [3, 4, 8, 6]
lst.extend([2, 5, 7])
print(lst)   # [3, 4, 8, 6, 2, 5, 7]

リストの要素に順番にアクセスする

リスト内の要素を順番に渡ることで、繰り返し処理を記述することができます。

for 変数名 in リストオブジェクト:
    処理

リストの要素が順番に変数に代入され処理が行われます。具体的には以下のように書きます:

lst = [24, 16, 38]

for elem in lst:
    print(elem)

# 24
# 16
# 38

また、enumerate 関数を使うことで、リストの要素とともにインデックスを同時に取得することができます。

lst = [24, 16, 38]

for i, elem in enumerate(lst):
    print(i, elem)

# 0 24
# 1 16
# 2 38

リストの要素の出力

要素の間に空白を入れて、リストの要素を順番に出力するには、例えば以下のように記述します:

lst = [24, 16, 38]

for i, elem in enumerate(lst):
    if i > 0:
        print(" ", end = "")   # i が 0 より大きいとき、つまり最初の要素ではないとき空白を出力
    print(elem, end = "")
print()   # 改行を出力

# 24 16 38

print 関数では、end オプションを "" と指定することで改行せずに出力することができます。( end オプションはデフォルトとして改行文字が指定されています。)

join関数を用いることで、同様の処理をより簡潔に記述することができます。join関数は文字列や数値を結合する関数で、リストの要素を指定した区切り文字で出力したい場合などに応用することができます。

lst = [10, 20, 30, 40, 50]
print(lst)
print("".join(map(str,lst)))    # 1020304050
print(" ".join(map(str,lst)))   # 10 20 30 40 50
print(",".join(map(str,lst)))   # 10,20,30,40,50

リストの要素をソートする

リスト型で用意されている sort メソッドを使うことで、値を昇順に並び替えることができます。

リストオブジェクト.sort()

また、リスト型で用意されている reverse メソッドを使うことで、要素の順番を逆に並び替えることができます。

リストオブジェクト.reverse()

具体的には以下のように記述します:

lst = [27, 35, 42, 18]

lst.sort()
print(lst)    # [18, 27, 35, 42]

lst.reverse()
print(lst)    # [42, 35, 27, 18]  # sort と reverse を組み合わせることで降順に並び替えることも可能

Reference

 

オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)

AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。