Python Note 03(リスト)


1.リストは何ですか
リストはPythonで最もよく使われる で、特定の順序で並べられた一連の要素から構成されています.1つのリストには、異なるタイプの要素を含めることができますが、通常は各要素のタイプが同じです.Pythonでは、リストをかっこ[]で表し、その要素をカンマで区切ります.簡単なリストの例を次に示します.
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']

Pythonにリストを印刷させると、Pythonはリストの内部の表示を印刷し、かっこを含む.
print(nums)
print(colors)

result:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
['red', 'green', 'blue', 'yellow', 'white', 'black']

2.アクセスリストの要素
リストは順序付けされたシーケンスであるため、リスト内の任意の要素にアクセスするには、その要素の位置( )をPythonに伝えるだけです.リスト要素にアクセスするには、リストの名前を指定し、要素のインデックスを指定し、カッコ内に配置します.たとえば、リストcorsから2番目の色を抽出します.
print(colors[1])

result:
green

コードの1は予想外かもしれません.実は、Pythonでは、リストのインデックスは0ではなく1から始まり、これはリスト操作の下位実装に関係している.たとえば、リストの最初の要素を取得するには、次のコードを入力します.
print(colors[0])
red
result:


Pythonは、最後のリスト要素にアクセスするための特別な構文を提供します.インデックスを-1として指定すると、リストの最後の要素を返すことができます.
print(colors[-1])

result:
black

リストの長さを知らずに最後の要素にアクセスする必要があるため、この構文は便利です.この規則は、他の負数インデックスにも適用されます.たとえば、インデックス-2は最後から2番目の要素を返し、インデックス-3は最後から3番目の要素を返します.
3.インデックスエラーの回避
インデックスエラーは、Pythonが指定したインデックスに要素が見つからないことを意味します.たとえば、上記のcolorsリストには6つの要素があります.うっかり7番目の要素にアクセスすると、プログラムがエラーを報告します.
print(colors[6])

result:
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-e2214493cd62> in <module>
----> 1 print(colors[6])

IndexError: list index out of range

6つの要素のリストのみが7番目の要素にアクセスしたときにインデックスエラーが発生したことは明らかです.このような場合は慌てずに、リストやその長さを印刷してみましょう.リストは、プログラムが動的に処理している場合に特にそうであると思います.リストまたはその長さを表示することで、このような論理エラーを見つけることができます.
4.リストの一部を使用
Pythonではリストの要素の一部を取り出して使用しますが、最も一般的な技術は です.たとえば、次のようなリストがあります.
lst = ["a", 2, "c", "d", 5, 9]

スライスを作成するには、[]で使用する最初の要素と最後の要素のインデックスを指定し、:でPythonを分離して、2番目のインデックスにアクセスする前の要素にアクセスした後に停止します.たとえば、リストの最初の3つの要素を出力するには、インデックスが0、1、2の要素を返す 0および 3を指定する必要があります.
print(lst[0:3])

result:
['a', 2, 'c']

リストの任意のサブセットを生成できます.たとえば、リストの2番目、3番目、4番目の要素を抽出する場合は、開始インデックスを1に、終了インデックスを4に指定します.
print(lst[1:4])

result:
[2, 'c', 'd']

最初のインデックスが指定されていない場合、Pythonはリストの先頭から自動的に開始します.
print(lst[:2])

result:
['a', 2]

スライスをリストの最後に終了させるには、同様の構文を使用します.たとえば、3番目の要素から最後の要素まで抽出するには、次のようにします.
print(lst[2:])

result:
['c', 'd', 5, 9]

これに基づいて、インデックスを終了した後にステップパラメータを追加する方法で、スライスのステップ長を指定することもできます.たとえば、インデックスが奇数の要素を抽出するには、次のようにします.
print(lst[::2])

result:
['a', 'c', 5]

5.リストの末尾に要素を追加
上記のcolorsリストを例にとると、リストの末尾に新しい色purpleを追加したいのですが、リストのappend()メソッドを呼び出すだけでいいです.
colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
colors.append("purple")
print(colors)

result:
['red', 'green', 'blue', 'yellow', 'white', 'black', 'purple']
append()メソッドは1つのパラメータのみを受け入れ、append()メソッドにパラメータを渡していないか、または1つ以上のパラメータを渡していない場合は、エラーが発生します.
colors.append()

result:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-32d93703b89b> in <module>
----> 1 colors.append()

TypeError: append() takes exactly one argument (0 given)

6.リストからすべての要素を削除
リストのclear()メソッドは、リストからすべての要素を削除できますが、リスト自体は削除されません.
colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
colors.clear()
print(colors)

result:
[]

リスト全体を削除する場合は、Pythonの内蔵関数delを使用します.リストを削除してからアクセスすると、エラーが発生します.
colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
del colors
print(colors)

result:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-16-4e748de86f4a> in <module>
      1 colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
      2 del colors
----> 3 print(colors)

NameError: name 'colors' is not defined

なお、clear()関数はパラメータを受け入れません.
7.リストのコピーを取得する
リストのcopy()メソッドは、list[:]と同様に、指定されたリストのコピーを返します.
colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
lst_colors = colors.copy()
print(lst_colors)

result:
['red', 'green', 'blue', 'yellow', 'white', 'black']

なお、copy()メソッドを使用して指定されたリストのコピーを返すと、 となり、最外層に含まれるデータが変化した場合、相互に影響はありませんが、内部ネストされたデータが変化した場合、対応するコピーオブジェクトも変更されます.
lst = [1, 2, 3, ["a", 7], 0]
lst_copy = lst.copy()
lst[0] = 0
print(lst)
print(lst_copy)
lst[3][1] = 1
print(lst)
print(lst_copy)

result:
[0, 2, 3, ['a', 7], 0]
[1, 2, 3, ['a', 7], 0]
[0, 2, 3, ['a', 1], 0]
[1, 2, 3, ['a', 1], 0]

8.リストで指定した値を取得する要素の数
リスト内のcount()メソッドは、指定した値の要素数を返します.このメソッドは、1つのパラメータのみを受け入れます.
lst = [0, 1, 2, 3, 4, 4, 4, 5, 5]
print(lst.count(3))
print(lst.count(4))
print(lst.count(5))

result:
1
3
2

指定した値がリストに表示されない場合は、0を返します.
print(lst.count(8))

result:
0

9.2つのリストをマージ+を使用して、2つのリストを結合し、新しいリストを返すことができます.
lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
lst3 = lst1 + lst2
print(lst3)

result:
[1, 2, 3, 4, 5, 6]

リストのextend()メソッドは、指定したリスト要素(または反復可能な要素)を現在のリストの末尾に追加します.
lst1.extend(lst2)
print(lst1)

result:
[1, 2, 3, 4, 5, 6]

10.指定した要素の場所を取得する
現在のリスト内の要素の特定の場所(インデックス)を特定して、次の操作を行う必要がある場合があります.Pythonリストには、index()メソッドが用意されています.
lst = [1, 2, 3, 4, 4]
print(lst.index(2))
print(lst.index(4))

result:
1
3

指定した値がリストに含まれていない場合は、エラーが発生します.
print(lst.index(5))

result:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-26-77d3098d6571> in <module>
----> 1 print(lst.index(5))

ValueError: 5 is not in list

11.リスト内の指定された場所に要素を挿入する
リスト内のinsert()メソッドは、リスト内の指定された位置に要素を挿入することを実現します.このメソッドは、2つのパラメータ、1つの位置パラメータ、1つの挿入値パラメータを受け入れます.
lst = [1, 2, 3, 4, 5]
lst.insert(2, "a")
print(lst)

result:
[1, 2, 'a', 3, 4, 5]
insert()メソッドの位置パラメータは境界を越えて、Pythonは自動的に挿入する要素を一番前または一番後ろの位置に挿入します.
lst.insert(-10, "b")
lst.insert(10, "c")
print(lst)

result:
['b', 'b', 1, 2, 'a', 3, 4, 'b', 5, 'c', 'c', 'c']

12.指定された位置要素を削除する
リストを操作するときに、位置要素を削除するのは一般的な操作です.pop()メソッドを使用して、指定された位置要素を削除し、その値を返します.このメソッドは、位置パラメータを受け入れます.デフォルト値は-1です.
lst = [1, 2, 3, 4]
print(lst.pop(1))
print(lst)

result:
2
[1, 3, 4]

lst.pop()
print(lst)

result:
[1, 3]
pop()メソッドを使用する場合は、インデックスの境界を越えるとエラーが発生することに注意してください.
lst.pop(5)

result:
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-34-8b01fa228da3> in <module>
----> 1 lst.pop(5)

IndexError: pop index out of range

Pythonの内蔵関数delを使用して、指定された位置の要素を削除することもできます.
lst = [1, 2, 3, 4]
del lst[0]
print(lst)

result:
[2, 3, 4]

13.指定した要素の削除
エレメントを削除しようとする場合がありますが、リスト内の場所は事前に分かりません.この場合、メソッドremove()を使用して要素を直接削除することができ、リストに複数回表示された場合、最初の要素のみを削除します.
lst = [1, 2, 3, 4, 5, 4]
lst.remove(2)
print(lst)

result:
[1, 3, 4, 5, 4]

lst.remove(4)
print(lst)

result:
[1, 3, 5, 4]

削除された要素がリストに含まれていない場合は、エラーが表示されます.
lst.remove(0)

result:
ValueError                                Traceback (most recent call last)
<ipython-input-37-57b3f8ee974a> in <module>
----> 1 lst.remove(0)

ValueError: list.remove(x): x not in list

14.リスト内の要素を反転
リストのreverse()メソッドを使用して、パラメータを必要としない要素のソート順を反転します.
lst = [1, 2, 3, 4, 5]
lst.reverse()
print(lst)

result:
[5, 4, 3, 2, 1]

15.リストの並べ替え
ソートはリストの最も一般的な操作であり、リストメソッドsort()を使用してリストを直接ソートできます.sort()がパラメータを受け入れていない場合、デフォルトはリストを昇順ソートします.
lst = [1, 3, 7, 2, 5]
lst.sort()
print(lst)

result:
[1, 2, 3, 5, 7]

降順ソートを行うには、sort()メソッドのreverseパラメータをTrueに設定します.
lst.sort(reverse=True)
print(lst)

result:
[7, 5, 3, 2, 1]

パラメータkeyでソートの基準を指定することもできます.すなわち、何に基づいてソートするかを指定することもできます.たとえば、文字列の長さに基づいて降順にソートされる文字列のリストがあります.
lst = ["hello", "hi", "how", "much", "welcome"]
lst.sort(key=lambda x: len(x), reverse=True)
print(lst)

result:
['welcome', 'hello', 'much', 'how', 'hi']
sort()メソッドを使用してソートするのは、その場で操作されます.また、Pythonの内蔵関数sorted()メソッドを使用してリストをソートすることもできます.これは、ソート後のコピーを返します.
lst = [4, 2, 7, 3, 5]
lst_1 = sorted(lst)
print(lst)
print(lst_1)

result:
[4, 2, 7, 3, 5]
[2, 3, 4, 5, 7]

最終更新日:2021.02.02