Python for Coding Test(2)リスト(List)


リスト(List)はPythonのデータ構造であり、値をリストする配列と考えられる.Listはstring,tupleとともに順序のある資料型である.
Pythonのlistは他の言語のlistと少し違います.Pythonとともに用いた符号化試験用のC++と比較すると,C++のSTLが提供するVectorデータ型と類似していると考えられる.
append()メソッドとremove()メソッドを提供するリンクリストを使用します.
リストの要素
これらの要素はカッコ([])で囲まれてリスト化できます.
a = [] # 원소가 들어있지 않은 리스트도 리스트
b = [0, 1, 2, 3] # 숫자 자료형 저장
c = ['Hello', 'World!'] # 문자열도 저장할 수 있다.
d = [0, 'zero'] # 여러 자료형을 함께 저장할 수 있다.
e = [0, [1,2], [3,4,5]] # 리스트 안에 또 다른 리스트를 넣을 수 있다.
索引とスライド
リストは文字列のようにインデックス化することもできます.
  • では、文字列インデックスと同じ方法を使用します.
  • リストが
  • にある場合、インデックスはC++の2次元配列のように作成できます.
  • a = ['zero', 'one', 'two', 'three', ['four', 'five']]
    print(a[0])
    	>> zero
    print(a[3])
    	>> three
    print(a[-1])
    	>> ['four','five']
    print(a[4][1]) # 이중 리스트 인덱싱
    	>> five
    対応するインデックスを使用してスライドすることもできます.
  • の使用方法は文字列のスライドと同じです.
  • リストのリストにインデックスを作成することもできます.
  • a = ['zero', 'one', 'two', 'three', ['four', 'five']]
    print(a[:2])
    	>> ['zero', 'one']
    print(a[2:])
    	>> ['two', 'three', ['four', 'five']]
    print(a[1:3])
    	>> ['one', 'two']
    print(a[4][:1]) # 이중 리스트의 슬라이싱
    	>> ['four']
    リスト演算
    リストは文字列のように+と*の演算もできます.
    a = [1, 2, 3]
    b = [4, 5, 6]
    print(a+b)
    	>> [1, 2, 3, 4, 5, 6]
    print(a*3)
    	>> [1, 2, 3, 1, 2, 3, 1, 2, 3]
    リストの長さはlen関数で求めることができます.
    a = [1, 2, 3, 4, 5]
    print(len(a))
    	>> 5
    for文を使用してリストの要素にアクセスするには、次の方法を使用します.
    a = [1, 2, 3, 4, 5]
    for i in a: # element 들에 접근
    	print(i, end=" ")
    	>> 1 2 3 4 5 
    for idx in range(len(a)): # 인덱스로 접근
    	print(a[idx], end=" ")
        >> 1 2 3 4 5
        
    # enumerate를 사용하면 매 반복마다 리스트의 인덱스와 값을 튜플로 반환한다.
    for idx, value in enumerate(a):
    	print(idx, value)
        	>> (0, 1)
    	   (1, 2)
    	   (2, 3)
    	   (3, 4)
    	   (4, 5)
    リストの変更、削除
    リスト値の変更
  • リストのインデックスを使用して、値にアクセスして変更できます.
  • a = [1, 2, 3, 4, 5]
    a[1] = 10
    print(a)
    	>> [1, 10, 3, 4, 5]
    リスト要素の削除
  • del関数で削除できます.
  • del関数はオブジェクトを削除するので、斜線を使用して複数の要素を削除できます.
  • a = [1, 2, 3, 4, 5]
    del a[1]
    print(a)
    	>> [1, 3, 4, 5]
    del a[2:] # 슬라이싱을 통한 삭제도 가능하다.
    	>> [1, 3]
    List相関関数
    append関数
  • append(x):リストの末尾にxを追加します.
  • C++ベクトルのpush back関数と同じです.
  • a = [1, 2, 3, 4, 5]
    a.append(6)
    print(a)
    	>> [1, 2, 3, 4, 5, 6]
    
    # 문자열을 비롯한 어떤 자료형도 추가할 수 있다.
    a.append('seven') 
    print(a)
    	>> [1, 2, 3, 4, 5, 6, 'seven']
    a. append([8, 9])
    print(a)
    	>> [1, 2, 3, 4, 5, 6, 'seven', [8, 9])
    Insert関数
  • insert(idx,value):リストのidx位置に値を追加します.
  • 注:リストのインデックスは0から始まります.注意
  • :insertの時間的複雑度はO(N)であるため、appendが使用可能な場合にはappendを使用することが望ましい.
  • a = [1, 3, 4, 5]
    a.insert(1,2)
    print(a)
    	>> [1, 2, 3, 4, 5]
    remove関数
  • remove(x):リストの最初のxを削除します.
  • 注意:removeも同様に時間複雑度がO(N)であり、ある値を繰り返す場合はsetを使用することが望ましい.
  • a = [1, 2, 2, 3]
    a.remove(2)
    print(a)
    	>> [1, 2, 3]
    pop関数
  • pop():リストから削除し、リストの末尾の要素を返します.
  • pop(idx):リストidxの位置の要素を削除して返します.
  • a = [1, 2, 3, 4]
    b = a,pop()
    print(a)
    	>> [1, 2, 3]
    print(b)
    	>> 4
        
    b = a.pop(0)
    print(a)
    	>> [2, 3]
    print(b)
    	>> 1
    sort関数とreverse関数
  • sort():リスト内の要素を順番に並べます.
  • sort(reverse=True)で降順にソートできます.
  • 反転():リストの順序を現在の状態から反転します.
  • a = b = [2, 3, 5, 1, 4]
    a.sort()
    print(a)
    	>> [1, 2, 3, 4, 5]
    
    b.reverse()
    print(b) >> [4, 1, 5, 3, 2]
    index関数
  • index(x):xの初期位置を返します.
  • a = [1, 2, 2, 3, 4]
    print(a.index(2))
    	>> 1
    print(a.index(3))
    	>> 3
    print(a.index(5))
    	>> Traceback (most recent call last):
    	>> File "<stdin>", line 1, in <module>
    	>> ValueError: 5 is not in list
    count関数
  • count(x):xが配列内に何個あるかを返します.
  • a = [1, 2, 3, 3, 3]
    print(a.count(2))
    	>> 1
    print(a.count(3))
    	>> 3
    拡張関数
  • extend(x):リストxをマージします.
  • xの位置はリスト資料型のみです.
  • a = [1, 2, 3]
    a.extend([4, 5])
    print(a)
    	>> [1, 2, 3, 4, 5]
        
    b = [6, 7]
    a.extend(b)
    print(a)
    	>> [1, 2, 3, 4, 5, 6, 7]
    listでfor文を使用する
    コードの簡潔さを追求するPythonのように、リストでfor文を使用することができます.
    △最初はこれを知らなかったので、for文でリストをifにまとめました.
    forゲートとともにifゲートを使用します.
    a = [1, 2, 3, 4, 5, 6]
    print([item for item in a if item % 2 == 0])
    	>> [2, 4, 6]
    今は単純な段階の問題しかやっていませんが、リスト資料型は本当にたくさん使われているようです.特に,リストスクライブにより解答のコード長を大幅に短縮できる.
    また、他の言語の配列とは異なり、Vectorの性質を持っている点が非常に大きなメリットです.appendとremoveが提供されているので、配列のサイズやインデックスを毎回考慮する必要はありません.
    参考資料
    WikiDocs JumptoPython-02-3リスト資料型