四、pythonのデータ型——リスト

8519 ワード

リスト(list)
リストは秩序ある集合で、cの中の配列に似ています.その特徴は、いつでも要素を追加したり削除したりすることができ、pythonではデータを保存するのによく使われることです.リストの特徴は中かっこで、内部要素はカンマで区切られています.
1.pythonで次の方法でリストを定義します.
a = []  #   a        
name = ['Tom']  #   name     ,        ,   'Tom'
classmates = ['Michael', 'Bob', 'Tracy']  #classmate             
list1 = ['Monday', 1, 2.5]  #list1      ,   、  、   

このリストには、文字列、整数、浮動小数点、ブール値、空の値、リストなど、任意の要素を入れることができます.要素と要素の間をカンマで区切ります.
2.インデックス値を使用してリストの値を取得
リストには各要素にシーケンス番号が割り当てられます.このシーケンス番号はインデックス(index)と呼ばれ、最初の要素の位置は0、2番目の要素は1です.
>>> classmates = ['Michael', 'Bob', 'Tracy']  #      
>>> print(classmates[0])  #classmates[0]  classmates       
Michael
>>> b = classmates[1]  # classmates          b
>>> print(b)  #  b  
Bob

インデックスを使用してリストの値を取得する場合は、中カッコを使用してアクセスし、中カッコの前にリスト名を付け、中カッコの内部に要素のインデックスを追加する必要があります.0は最初の要素の位置を表し、1は2番目を表し、-1は最後から1番目を表し、-2は最後から2番目を表す
>>> classmates = ['Michael', 'Bob', 'Tracy']  #    
>>> print(classmates[-1])  #         
Tracy
>>> print(classmates[-2])  #         
Bob
len()関数を使用して、リストに何個の要素があるかを確認できます.
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> print(len(classmates))
3

3.要素の追加
pythonでは、リストの操作が非常に柔軟で、要素を追加または削除できます.list.append()関数の使用の追加
>>> classmates = ['Michael', 'Bob', 'Tracy']  #    
>>> classmates.append('Tom')  # classmates    'Tom'       
>>> print(classmates)  #  classmates    
['Michael', 'Bob', 'Tracy', 'Tom']
list.append()関数は、リストの最後に要素を挿入し、特定の場所に要素を挿入したい場合はlist.insert()関数を使用します.
>>> classmates = ['Michael', 'Bob', 'Tracy']  #    
>>> classmates.insert(1,'Tom')  #     1  'Tom'
>>> print(classmates)  #    
['Michael', 'Tom', 'Bob', 'Tracy']
list.insert()関数は、2つのパラメータを受け入れます.1つ目のパラメータは挿入位置であり、2つ目のパラメータは挿入する要素です.
appendとinsertを使用する場合は、操作するリストを前に明記する必要があります.上記の例のようにclassmatesというリストを操作するので、classmates.append()またはclassmates.insert()と書かなければなりません.そう書かないと、コンピュータはどのリストに要素を加えるか分かりません.
特にない場合は、append()関数を使用して要素を追加することをお勧めします.appendを使用する場合、要素はデフォルトでリストの末尾に追加され、他の要素のインデックス値の変更はありません.Insertを使用すると、上のinsert(1,'Tom')のように、位置1に'Tom'を挿入すると、Tomの後ろのすべての要素にインデックス値が1つ追加され、リスト内の要素が多ければ多いほど影響の度合いが大きくなるため、append()関数を使用するとinsert()関数よりも速くなります.
4.要素の削除
リスト内の要素を削除する方法は3つあります.
  • delを使用して要素
  • を削除する.
    >>> names = ['Michael', 'Bob', 'Tracy']  #    
    >>> del names[1]  #  del   names       
    >>> print(names)  #    
    ['Michael', 'Tracy']
    

    delの後に削除する要素をインデックスで示す必要があります.すなわち、上記の例では、names[1]はnamesの2番目の要素を表し、delを使用して削除できます.
  • list.pop()関数を使用して
  • を削除する.
    >>> names = ['Michael', 'Bob', 'Tracy']  #    
    >>> names.pop(1)  #  names       
    'Bob'
    >>> print(names)   #    
    ['Michael', 'Tracy']
    
    list.pop()関数はdelとあまり差がなく,いずれもインデックス値を用いて削除されるが,書き方は異なる.names.pop(1)を実行すると、python shellは2番目の要素の値、つまり削除する値を印刷します.これは、pop()という関数に戻り値があるためです.この値を使用する必要がある場合があります.この場合、変数で保存できます.
    >>> names = ['Michael', 'Bob', 'Tracy']  #    
    >>> a = names.pop(1)  #  names       ,      a
    >>> print(names)  #    
    ['Michael', 'Tracy']
    >>> print(a)  #  a
    Bob
    

    これにより、aを呼び出すことで、さっき削除した要素を使用することができます.
  • list.remove()関数を使用して
  • を削除する.
    >>> names = ['Michael', 'Bob', 'Tracy', 'Bob']  #    
    >>> names.remove('Bob')  #  'Bob'
    >>> print(names)  #    
    ['Michael', 'Tracy', 'Bob']
    
    list.remove()関数の役割は、最初に一致する要素を削除することです.上の例では、namesというリストには、2つの「Bob」があり、remove関数は最初の「Bob」だけを削除します.これがlist.remove()関数の特徴です.
  • list.clear()を使用するクリアリストlist.clear()は、リストをクリアし、内部のすべての要素
  • を削除することができる.
    >>> names = ['Michael', 'Bob', 'Tracy', 'Bob']  #    
    >>> names.clear()  #    
    >>> print(names)  #    
    []
    

    5.リストのスライス
    リストの最初の10要素、または前のn要素を使用したい場合は、リストのスライスを使用する必要があります.
    >>> names = ['Michael', 'Bob', 'Tracy', 'Tom', 'Jack']  #    
    >>> print(names[1:3])  #  names             
    ['Bob', 'Tracy']
    

    スライスはインデックスと似ていますが、インデックスの中カッコには数が1つしかありませんが、スライスは異なります.スライスはカットリストで、カットされた部分を形成して新しいリストを形成します.
    スライス:list[start:end:[step=1]]、これがスライスの式で、startとendの両方が1つ必要であることが要求されます.stepは指定しなくてもいいわけではありません.指定しない場合はデフォルトは1です.
    スライスはどのように理解すればいいのか、startは始まりの位置であり、endは終わりの位置である.スライスには「取る前に取らない」という特徴があり、上の例を見ると、1はstart、3はend、1は2番目の要素、3は4番目の要素、リストスライスの場合、後ろの数字に対応する要素を取らない、つまり4番目の要素を取らないので、names[1:3]は2番目の要素と3番目の要素しか取らなかった.これがいわゆる取前不取後です.
    次の例を見てみましょう.
    >>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  #    
    >>> print(numbers[:5])  #              
    [0, 1, 2, 3, 4]
    >>> print(numbers[0:5])  #  
    [0, 1, 2, 3, 4]
    >>> print(numbers[5:])  #              
    [5, 6, 7, 8, 9, 10]
    >>> print(numbers[5:len(numbers)])  #  
    [5, 6, 7, 8, 9, 10]
    >>> print(numbers[:])  #   start end
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    startまたはendを指定しない場合、startのデフォルトは0、endのデフォルトは最後の要素のインデックス値+1です.なぜなら、「前に取っても後に取らない」ため、最後の要素を取るには1を追加する必要があります.上記の例では、最後の要素のインデックス値をlen(numbers)で表しています.インデックス値は0から始まるので、最後の要素のインデックス値はリスト内の要素個数-1に違いありません.startとendを設定しないと、デフォルトですべての要素が取られます.
    >>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> print(numbers[::2])
    [0, 2, 4, 6, 8, 10]
    >>> print(numbers[1::2])
    [1, 3, 5, 7, 9]
    

    Stepを追加すると、このオプションの後、stepはステップ長を表し、デフォルトは1で、2に設定すると、1つずつ取り、3に設定すると2つずつ取ります.上記の例では、最初のスライス、start、endは設定されていないため、最初の要素から1つずつ取り、すべての奇数位置の要素を得た.2番目のスライスはstartが1に設定されているので、偶数の位置の要素をすべて取りました.
    6.その他の操作
  • の組合せ'+'番号を使用して、2つのリストを組み合わせることができます.
  • >>> a = [1, 2, 3]  #    
    >>> b = ['a', 'b', 'c']  #    
    >>> print(a+b)  #    a   b       
    [1, 2, 3, 'a', 'b', 'c']
    
  • 繰り返し'*'号を使って繰り返し、後に繰り返し回数を書いて、以下の通り:
  • >>> a = ['a', 'b']  #    
    >>> print(a*3)  #    a  3     
    ['a', 'b', 'a', 'b', 'a', 'b']
    
  • 最大値と最小値の最大値と最小値を求めるには、それぞれlen(numbers)max(list)が用いられる.
  • >>> a = [1, 2, 3]  #    
    >>> print(max(a))  #     
    3
    >>> print(min(a))  #     
    1
    
  • 求和min(list)を用いて求和
  • を行う.
    >>> a = [1, 2, 3]
    >>> print(sum(a))
    6
    
  • ある要素の出現回数を統計sum(list)関数を使用して、ある要素がリストに現れる回数を統計します.
  • >>> a = [1, 2, 3, 1, 2, 3, 1, 2, 3]
    >>> print(a.count(2))
    3
    
  • ソートlist.count()関数を使用して、元のリストを小さいものから大きいものにソートできます.
  • >>> a = [5, 3, 2, 5, 7, 1]
    >>> a.sort()
    >>> print(a)
    [1, 2, 3, 5, 5, 7]
    
  • 反転list.sort()関数を使用して、リスト内の要素を逆方向にリハーサルできます.
  • >>> a = [1, 2, 3, 5, 5, 7]
    >>> a.reverse()
    >>> print(a)
    [7, 5, 5, 3, 2, 1]
    
  • ある要素がリスト内で使用するか否かを判断するinはある要素がリスト内にあるか否かを判断することができ、inは「…中」の意味
  • である.
    >>> a = [1, 2, 3, 5, 5, 7]
    >>> print(3 in a)
    True
    >>> print(0 in a)
    False
    

    3リストでは0はリストにないのでlist.reverse()はTrue、3 in aはFalse
  • レプリケーション時には、既存のリストと同じリストを作成したい場合は、0 in a関数
  • を使用します.
    >>> a = [1, 2, 3, 5, 5, 7]
    >>> b = a.copy()
    >>> print(b)
    [1, 2, 3, 5, 5, 7]
    

    リストの詳細については、list.copy()を使用してヘルプドキュメントを参照してください.