Python|リストの処理


1.操作リスト


まず、リストを処理する方法について説明します.メソッドは、オブジェクト内の関数を表します.詳細は、後述の説明:を参照してください.Pythonが提供するリスト方法はいろいろありますが、ここでは一般的な方法を紹介します.

1-1リストに要素を追加(append)

appendリストの最後に要素を追加します.
a = [10, 20, 30]
a.append(40)
print(a)
[10, 20, 30, 40]

もちろん、空のリストに要素を追加することもできます.
a = []
a.append(10)
print(a)
[10]

1-2リストにリストを追加

append要素ではなく括弧にリストを含めるとどうなりますか?リストにリストが追加されます.
a = [10, 20, 30]
a.append([500, 600])
print(a)
print(len(a))
[10, 20, 30, [500, 600]]
4

特に、リストは要素として扱われます.したがって、len(a)を行うと4が現れる.
すなわち、appendは常にリスト長1を増加させる.

1~3リストを展開(extend)


では、リストに複数の要素を追加するにはどうすればいいですか?最一次元のアイデアはappendを複数回使用する方法です.しかし、これは非効率的で、追加する要素が多いと不便です.この場合extendを使用します.
a = [10, 20, 30]
a.extend([500, 600])
print(a)
print(len(a))
[10, 20, 30, 500, 600]
5
extendリストの最後に他のリストを接続して、リストを拡張します.以上のコードは[10,20,30]リストに[500600]リストが接続され[10,20,30500600]リストとなる.
呼び出しメソッドのリスト(上のコードではa)は、新しいリストを作成するのではなく変更されます.

要素を1~4リストの特定のインデックスに追加(insert)


以上の方法(append,extend)はリストの末尾に要素を追加した.では、私たちが望む場所に要素を追加できますか?この場合の使用方法はinsertである.
a = [10, 20, 30]
a.insert(1, 15)
print(a)
[10, 15, 20, 30]
insert(인덱스, 요소)特定のインデックスに要素を追加できます.上のコードは、インデックス1に15要素が追加されています.インデックスは0から始まるため、2番目に「15」要素が追加されていることがわかります.
insertでよく使われるパターンは次のとおりです.
  • insert(0, 要素): リストの先頭に要素を追加
  • insert(len(リスト)、要素):リストの末尾に要素を追加
  • a = [10, 20, 30]
    a.insert(len(a), 40)
    print(a)
    [10, 20, 30, 40]
    以上の方法は,insertを用いてリストの末尾に要素を追加するモードであるが,実は上のコードa.append(40)は全く同じである.

    1-4-1リストの目的のインデックスに複数の要素を追加


    では、特定の場所に複数の要素を追加するにはどうすればいいのでしょうか.以前にスライスで要素を追加する方法でいいです.
    a = [10, 20, 30]
    a[1:1] = [15, 16, 17]
    print(a)
    [10, 15, 16, 17, 20, 30]
    a[1:1]に示すように、指定した開始インデックスと終了インデックスが同じ場合、インデックス内の要素を上書きすることなく、新しい要素を追加できます.

    1~5リストの要素を削除


    今回はリストから要素を削除する方法です.要素を削除する方法は2つあります.
  • pop:最後の要素または特定のインデックスの要素を削除
  • remove:特定の値を検索して削除
  • 1~5-1特定のインデックスの要素を削除(pop)

    pop()は、最後の要素を削除し、削除した要素を返します.
    a = [10, 20, 30]
    print(a.pop())
    print(a)
    30
    [10, 20]
    上記のコードは、[10,20,30]リストで最後の要素30をpop関数に削除した後に返される.したがって、出力30およびリストにおいては、最後の要素の[10,20]が欠けている.

    では、インデックスの要素を削除するときはどうすればいいのでしょうか.括弧にインデックス値を付けるだけでいいです.
    a = [10, 20, 30]
    print(a.pop(1))
    print(a)
    20
    [10, 30]
    pop|カッコにインデックス値「1」を付けると、1番のインデックスの「20」が削除されて戻り、実際にリストを出力すると、リストの「20」が削除されます.

    1-5-2リストから特定の値を検索して削除します(remove)


    今回は特定の値を検索して削除します.popまたはdelは、特定のインデックスを使用して値を削除します.リストから必要な値を削除したい場合があります.この場合removeを使用できます.
    a = [10, 20, 30]
    a.remove(20)
    print(a)
    [10, 30]
    remove(값)リストで特定の値を検索して削除します.上記のコードは、20を検索して削除する要素です.popとは異なり、removeは削除された値を返しません.したがって、実際には、print(a.remove(20))であれば、Noneが出力される.
    リストに同じ値が複数ある場合はどうなりますか?
    a = [10, 20, 30, 20]
    a.remove(20)
    print(a)
    [10, 30, 20]

    同じ値が複数ある場合は、最初に見つかった値を削除します.そのため、上のコードは1番インデックスの20が削除されました.

    %リストを使用したスタックとキューの作成


    スタックとキューは、これまでに知られている方法で作成できます.下図に示すように、appendおよびpopを呼び出す画像が90度回転するとスタックになります.(中に入りながら出る)

    ここでpop()ではなくpop(0)を使用すると、すぐにキューになります.

    もちろん、pop(0), append()ではなくpop(), insert(0, 요소)を使用して追加/削除することもできますが、逆も同様です.
    Pythonでは、スタックはリストを使用できますが、キューはdeque:doubleendqueueと呼ばれるデータ型を提供し、キューをより効率的に使用できます.インデックスは、両端から追加/削除できる構造です.
    >>> from collections import deque    # collections 모듈에서 deque를 가져온다.
    >>> a = deque([10, 20, 30])
    >>> a
    deque([10, 20, 30])
    >>> a.append(500)    # 덱의 오른쪽에 500 추가
    >>> a
    deque([10, 20, 30, 500])
    >>> a.popleft()     # 덱의 왼쪽 요소 하나 삭제
    10
    >>> a
    deque([20, 30, 500])
    dequeのappendはインデックスの右側に要素を追加し、popleftはインデックスの左側の要素を削除します.逆に、appendleftはインデックスの左側に要素を追加することができ、popはインデックスの右側の要素を削除することができる.

    1-6リストから特定の値を取得するインデックス(index)

    a = [10, 20, 30, 20, 40]
    print(a.index(20))
    1
    index(값)リストで特定の値のインデックスを検索します.同じ値が複数ある場合は、最初に見つかった値のインデックスを求めます.

    1-7特定値の個数(count)を求めます

    a = [10, 20, 30, 20, 40]
    print(a.count(20))
    2

    1~8リストの順序を反転(反転)

    >>> a = [10, 20, 30, 15, 20, 40]
    >>> a.reverse()
    >>> a
    [40, 20, 15, 30, 20, 10]

    ソート1-9リスト(sort)

    >>> a = [10, 20, 30, 15, 20, 40]
    >>> a.sort()
    >>> a
    [10, 15, 20, 20, 30, 40]
    基本的には昇順に並べられています.降順でソートする場合は、sort(reverse=True)を実行します.
    >>> a = [10, 20, 30, 15, 20, 40]
    >>> a.sort(reverse=True)
    >>> a
    [40, 30, 20, 20, 15, 10]

    1-10メソッドsortと内蔵関数のソートの違い


    Pythonはsortメソッドだけでなく、内蔵関数sortedも提供しています.両方の関数はソート関数ですが、いくつかの違いがあります.sortは使用するリストを変更し、sortedは新しいソートリストを生成します.
    >>> a = [10, 20, 30, 15, 20, 40]
    >>> a.sort()
    >>> a
    [10, 15, 20, 20, 30, 40]
    >>> a = [10, 20, 30, 15, 20, 40]
    >>> sorted(a)
    [10, 15, 20, 20, 30, 40]
    >>> a
    [10, 20, 30, 15, 20, 40]

    1-11リストのすべての要素を削除(clear)

    clearは、すべてのリストの要素を削除します.
    >>> a = [10, 20, 30]
    >>> a.clear()
    >>> a
    []
    したがって、上のコードのaは空のリストになります.clear関数に加えて、開始インデックスと終了インデックスを省略することによって、del a[:]のような空のリストを作成する方法もある.
    >>> a = [10, 20, 30]
    >>> del a[:]
    >>> a
    []

    スライス処理1-12リストの使用


    リストでは、メソッドを使用せずにシート操作を使用することもできます.次に、リストの最後に要素のリストを追加します.
    >>> a = [10, 20, 30]
    >>> a[len(a):] = [500]
    >>> a
    [10, 20, 30, 500]
    a[len(a):]の開始インデックスはlen(a)であり、リストの最後のインデックスより1大きい.つまり、リストの末尾から始めます.(リストの範囲外のインデックスを使用できます.)
    a[len(a):] = [500]リストを含むリストを指定すると、aのようなリストの末尾に値が追加されます.
    そして、a.append(500)a[len(a):] = [500, 600]に等しい.
    >>> a = [10, 20, 30]
    >>> a[len(a):] = [500, 600]
    >>> a
    [10, 20, 30, 500, 600]

    %リストが空かどうかを確認


    リスト(シーケンスオブジェクト)が空であることを確認するにはどうすればいいですか?方法は簡単です.リストは、a.extend([500, 600])関数を使用して長さを決定できます.len条件文を判断し、リストが空であるか否かを判断することができる.
    if not len(seq):    # 리스트가 비어 있으면 True
    if len(seq):        # 리스트에 요소가 있으면 True
    ただし、Pythonは、通常リスト(シーケンスオブジェクト)をif条件文と直接判断することをより簡単に提案する.
    if not seq:    # 리스트가 비어 있으면 True
    if seq:        # 리스트에 내용이 있으면 True
    リストが空であるかどうかを確認することで、リストの最後のインデックスにアクセスする方法があります.-1を指定すると、最後のインデックスにアクセスすることを知っておく必要があります.
    >>> seq = [10, 20, 30]
    >>> seq[-1]
    30
    ただし、空のリストで-1アクセスリストを使用すると、エラーが発生します.
    >>> a = []
    >>> a[-1]
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        a[-1]
    IndexError: list index out of range
    このため、if文を使用してコードを記述し、リストに要素がある場合に最後の要素にアクセスできます.
    seq = []
    if seq:               # 리스트에 요소가 있는지 확인
        print(seq[-1])    # 요소가 있을 때만 마지막 요소를 가져옴