前書き
listは、Pythonのデータ構造であり、変更可能または変更可能な順序付けられた要素のシーケンスです。 リスト内の各要素または値はアイテムと呼ばれます。 stringsが引用符で囲まれた文字として定義されているのと同様に、リストは角括弧[ ]
で囲まれた値を使用して定義されます。
リストは、多くの関連する値を操作する場合に使用すると便利です。 これらは、一緒に属するデータをまとめ、コードを圧縮し、複数の値に対して同じメソッドと操作を一度に実行できるようにします。
コレクションの種類であるPythonリストやその他のデータ構造について考える場合、コンピューター上にあるさまざまなコレクション(ファイルの種類、曲のプレイリスト、ブラウザーのブックマーク、メール、ビデオのコレクション)を考慮すると便利です。ストリーミングサービスなどでアクセスできます。
まず、文字列データ型のアイテムを含むリストを作成しましょう。
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']
リストを印刷すると、出力は作成したリストとまったく同じになります。
print(sea_creatures)
Output['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']
要素の順序付けられたシーケンスとして、リスト内の各アイテムは、インデックス作成を通じて個別に呼び出すことができます。 リストは小さなパーツで構成される複合データ型であり、値を追加、削除、変更できるため、非常に柔軟です。 多数の値を保存する必要がある場合、または値を反復処理する必要があり、それらの値を簡単に変更できるようにしたい場合は、リストデータ型を使用することをお勧めします。
このチュートリアルでは、Pythonでリストを操作する方法をいくつか説明します。
インデックスリスト
リスト内の各項目は、インデックス番号0
で始まる整数値であるインデックス番号に対応します。
リストsea_creatures
の場合、インデックスの内訳は次のようになります。
'鮫' | 「イカ」 | 'いか' | 「シャコ」 | 「アネモネ」 |
---|---|---|---|---|
0 |
1 |
2 |
3 |
4 |
最初の項目である文字列'shark'
はインデックス0
で始まり、リストはインデックス4
で項目'anemone'
で終わります。
Pythonリストの各アイテムには対応するインデックス番号があるため、他のシーケンシャルデータ型と同じ方法でリストにアクセスして操作できます。
これで、インデックス番号を参照してリストの個別のアイテムを呼び出すことができます。
print(sea_creatures[1])
Outputcuttlefish
このリストのインデックス番号は、上の表に示すように、0
から4
の範囲です。 したがって、アイテムを個別に呼び出すには、次のようにインデックス番号を参照します。
sea_creatures[0] = 'shark'
sea_creatures[1] = 'cuttlefish'
sea_creatures[2] = 'squid'
sea_creatures[3] = 'mantis shrimp'
sea_creatures[4] = 'anemone'
インデックス番号が4より大きいリストsea_creatures
を呼び出すと、有効ではなくなるため、範囲外になります。
print(sea_creatures[18])
OutputIndexError: list index out of range
正のインデックス番号に加えて、-1
から始めてリストの最後から逆方向にカウントすることにより、負のインデックス番号を持つリストのアイテムにアクセスすることもできます。 これは、リストが長く、リストの末尾に向かってアイテムを特定したい場合に特に便利です。
同じリストsea_creatures
の場合、負のインデックスの内訳は次のようになります。
'鮫' | 「イカ」 | 'いか' | 「シャコ」 | 「アネモネ」 |
---|---|---|---|---|
-5 |
-4 |
-3 |
-2 |
-1 |
したがって、負のインデックス番号を使用してアイテム'squid'
を出力する場合は、次のように実行できます。
print(sea_creatures[-3])
Outputsquid
+
演算子を使用して、リスト内の文字列アイテムを他の文字列と連結できます。
print('Sammy is a ' + sea_creatures[0])
OutputSammy is a shark
インデックス番号0
の文字列アイテムを文字列'Sammy is a '
と連結することができました。 +
演算子をconcatenate 2 or more lists togetherに使用することもできます。
リスト内のアイテムに対応するインデックス番号を使用すると、リストの各アイテムに個別にアクセスし、それらのアイテムを操作できます。
リスト内のアイテムの変更
インデックス番号を異なる値に設定することにより、インデックスを使用してリスト内のアイテムを変更できます。 これにより、リストに含まれるアイテムを変更および更新できるため、リストをより詳細に制御できます。
インデックス1
のアイテムの文字列値を'cuttlefish'
から'octopus'
に変更する場合は、次のように変更できます。
sea_creatures[1] = 'octopus'
ここで、sea_creatures
を出力すると、リストは異なります。
print(sea_creatures)
Output['shark', 'octopus', 'squid', 'mantis shrimp', 'anemone']
代わりに負のインデックス番号を使用して、アイテムの値を変更することもできます。
sea_creatures[-3] = 'blobfish'
print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
これで、'blobfish'
が-3
の負のインデックス番号(2
の正のインデックス番号に対応)の'squid'
に置き換わりました。
リスト内のアイテムを変更できると、リストを効率的に変更および更新できます。
スライスリスト
リストからいくつかのアイテムを呼び出すこともできます。 sea_creatures
の真ん中のアイテムだけを印刷したいとしましょう。これは、sliceを作成することで実行できます。 スライスを使用すると、コロン[x:y]
で区切られたインデックス番号の範囲を作成することで複数の値を呼び出すことができます。
print(sea_creatures[1:4])
Output['octopus', 'blobfish', 'mantis shrimp']
[1:4]
のようにスライスを作成する場合、最初のインデックス番号はスライスの開始位置(包括的)であり、2番目のインデックス番号はスライスの終了位置(排他的)です。そのため、上記の例では、 position、1
、2
、および3
は、印刷される項目です。
リストのいずれかの端を含める場合は、list[x:y]
構文の数値の1つを省略できます。 たとえば、リストsea_creatures
の最初の3つの項目('shark'
、'octopus'
、'blobfish'
)を出力する場合は、次のように入力します。
print(sea_creatures[:3])
Output['shark', 'octopus', 'blobfish']
これにより、リストの先頭が出力され、インデックス3
の直前で停止しました。
リストの最後にすべてのアイテムを含めるには、構文を逆にします。
print(sea_creatures[2:])
Output['blobfish', 'mantis shrimp', 'anemone']
リストをスライスするときに、正のインデックス番号と同様に、負のインデックス番号を使用することもできます。
print(sea_creatures[-4:-2])
print(sea_creatures[-3:])
Output['octopus', 'blobfish']
['blobfish', 'mantis shrimp', 'anemone']
スライスで使用できる最後のパラメーターはstrideと呼ばれ、リストから最初のアイテムが取得された後に進むアイテムの数を示します。 これまでのところ、strideパラメータを省略しており、Pythonのデフォルトではストライドが1に設定されているため、2つのインデックス番号の間のすべてのアイテムが取得されます。
この構成の構文はlist[x:y:z]
で、z
はストライドを参照します。 より大きなリストを作成してからスライスし、ストライドに値2を指定します。
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
print(numbers[1:11:2])
Output[1, 3, 5, 7, 9]
構築numbers[1:11:2]
は、1
を含み11
を含まないインデックス番号間の値を出力し、2
のストライド値はプログラムに他のすべての項目のみを出力するように指示します。
最初の2つのパラメーターを省略し、構文list[::z]
のパラメーターとしてストライドのみを使用できます。
print(numbers[::3])
Output[0, 3, 6, 9, 12]
ストライドを3
に設定してリストnumbers
を印刷すると、3つおきの項目のみが印刷されます。
0、1、2、3、4、5、6、7、8、9、10、11、12
正と負の両方のインデックス番号でリストをスライスし、ストライドを示すことで、リストを操作し、達成しようとしている出力を受け取るためのコントロールが提供されます。
演算子を使用したリストの変更
演算子を使用して、リストを変更できます。 +` and `+*+` operators and their compound forms `=+
と*=
の使用を見ていきます。
+
演算子を使用して、2つ以上のリストを連結できます。
sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
oceans = ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
print(sea_creatures + oceans)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
+
演算子は連結できるため、リスト形式の項目(または複数)を別のリストの最後に追加するために使用できます。 アイテムを角かっこで囲むことを忘れないでください:
sea_creatures = sea_creatures + ['yeti crab']
print (sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
*
演算子を使用して、リストを乗算できます。 おそらく、ディレクトリ内のすべてのファイルのコピーをサーバーに作成するか、プレイリストを友人と共有する必要があります。これらの場合、データのコレクションを増やす必要があります。
sea_creatures
リストに2を掛け、oceans
リストに3を掛けましょう。
print(sea_creatures * 2)
print(oceans * 3)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
*
演算子を使用すると、指定した回数だけリストを複製できます。
+` and `+*+` operators with the assignment operator `+=+`. The `=+
および*=
の複合形式を使用することもできます。複合演算子を使用すると、リストにすばやく自動化された方法でデータを入力できます。 これらの演算子を使用して、たとえばユーザーが入力した入力で後で変更できるプレースホルダーをリストに入力できます。
リスト形式のアイテムをリストsea_creatures
に追加しましょう。 このアイテムはプレースホルダーとして機能します。このプレースホルダーアイテムを数回追加したいと思います。 これを行うには、+=
演算子をfor loopとともに使用します。
for x in range(1,4):
sea_creatures += ['fish']
print(sea_creatures)
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']
forループの反復ごとに、'fish'
の追加のリスト項目が元のリストsea_creatures
に追加されます。
*=
演算子は、次のように動作します。
sharks = ['shark']
for x in range(1,4):
sharks *= 2
print(sharks)
Output['shark', 'shark']
['shark', 'shark', 'shark', 'shark']
['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']
演算子+` and `+*+` can be used to concatenate lists and multiply lists. The compound operators `=+
および*=
は、リストを連結してリストを乗算し、新しいIDを元のリストに渡すことができます。
リストからアイテムを削除する
アイテムは、del
ステートメントを使用してリストから削除できます。 これにより、リスト内で指定したインデックス番号の値が削除されます。
sea_creatures
リストから、アイテム'octopus'
を削除しましょう。 このアイテムは、1
のインデックス位置にあります。 アイテムを削除するには、del
ステートメントを使用してから、リスト変数とそのアイテムのインデックス番号を呼び出します。
sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
del sea_creatures[1]
print(sea_creatures)
Output['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
これで、インデックス位置1
のアイテムである文字列'octopus'
は、リストsea_creatures
に含まれなくなりました。
del
ステートメントで範囲を指定することもできます。 アイテム'octopus'
だけでなく、'blobfish'
と'mantis shrimp'
も削除したいとします。 これを実現するために、del
ステートメントを使用してsea_creatures
の範囲を呼び出すことができます。
sea_creatures =['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
del sea_creatures[1:4]
print(sea_creatures)
Output['shark', 'anemone', 'yeti crab']
del
ステートメントで範囲を使用することにより、インデックス番号1
(両端を含む)とインデックス番号4
(排他的)の間の項目を削除することができました。 3つのアイテムを削除した後の3つのアイテムのリスト付き。
del
ステートメントを使用すると、リストデータ型から特定のアイテムを削除できます。
リストアイテムを使用したリストの作成
リストは、リストで構成される項目で定義できます。各リストは、親リストのより大きな括弧で囲まれています。
sea_names = [[shark', 'octopus', 'squid', 'mantis shrimp'],['Sammy', 'Jesse', 'Drew', 'Jamie']]
リスト内のこれらのリストは、ネストされたリストと呼ばれます。
このリスト内のアイテムにアクセスするには、複数のインデックスを使用する必要があります。
print(sea_names[1][0])
print(sea_names[0][0])
OutputSammy
shark
最初のリストはアイテムと等しいため、インデックス番号は0になります。これは構造の最初の番号になり、2番目のリストにはインデックス番号が1になります。 内側のネストされた各リスト内には個別のインデックス番号があり、2番目のインデックス番号で呼び出します。
sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'
sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'
リストのリストを操作する場合、関連するネストされたリスト内の特定のアイテムにアクセスするには、複数のインデックス番号を参照する必要があることに留意することが重要です。
結論
リストのデータ型は、プログラムの実行中に変更できる柔軟なデータ型です。 このチュートリアルでは、リストのインデックス作成、スライス、変更、連結など、リストの基本機能について説明しました。
ここから、「https://www.digitalocean.com/community/tutorials/how-to-use-list-methods-in-python-3 [How To Use」を読んで、Pythonでのリストの操作について詳しく知ることができます。リストメソッド]」、および約list comprehensionsを使用して、既存のリストに基づいてリストを作成します。 一般的なデータ型の詳細については、「https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3 [データ型について]」チュートリアルをご覧ください。