パイソンリスト
Python リスト
このチュートリアルでは、Python リストに関するすべてを学びます:リストの作成、リスト要素の変更、要素の削除、その他のリスト操作について、例を使って説明します。
ビデオ:Python のリストとタプル
Python リストは、一度に複数の要素を操作できる最も用途の広いデータ型の 1 つです。たとえば、
# a list of programming languages
['Python', 'C++', 'JavaScript']
Python リストの作成
Python では、要素を角括弧 []
内に配置することでリストが作成されます。 、コンマで区切ります。
# list of integers
my_list = [1, 2, 3]
リストには任意の数の項目を含めることができ、さまざまなタイプ (整数、浮動小数点、文字列など) にすることができます。
# empty list
my_list = []
# list with mixed data types
my_list = [1, "Hello", 3.4]
リストは、アイテムとして別のリストを持つこともできます。これはネストされたリストと呼ばれます。
# nested list
my_list = ["mouse", [8, 4, 6], ['a']]
アクセス リスト要素
リストの要素にアクセスするにはさまざまな方法があります。
リスト インデックス
インデックス演算子 []
を使用できます リスト内の項目にアクセスします。 Python では、インデックスは 0 から始まります。したがって、5 つの要素を持つリストのインデックスは 0 から 4 になります。
これら以外のインデックスにアクセスしようとすると、IndexError
が発生します .インデックスは整数でなければなりません。 float やその他の型は使用できません。これは TypeError
になります。 .
ネストされたリストは、ネストされたインデックスを使用してアクセスされます。
my_list = ['p', 'r', 'o', 'b', 'e']
# first item
print(my_list[0]) # p
# third item
print(my_list[2]) # o
# fifth item
print(my_list[4]) # e
# Nested List
n_list = ["Happy", [2, 0, 1, 5]]
# Nested indexing
print(n_list[0][1])
print(n_list[1][3])
# Error! Only integer can be used for indexing
print(my_list[4.0])
出力
p o e a 5 Traceback (most recent call last): File "<string>", line 21, in <module> TypeError: list indices must be integers or slices, not float
ネガティブ インデックス
Python では、そのシーケンスに負のインデックスを付けることができます。 -1 のインデックスは最後のアイテムを参照し、-2 は最後から 2 番目のアイテムを参照します。
# Negative indexing in lists
my_list = ['p','r','o','b','e']
# last item
print(my_list[-1])
# fifth last item
print(my_list[-5])
出力
e p<図>
Python でのリストのスライス
スライス演算子 :
を使用して、リスト内のさまざまな項目にアクセスできます。 .
# List slicing in Python
my_list = ['p','r','o','g','r','a','m','i','z']
# elements from index 2 to index 4
print(my_list[2:5])
# elements from index 5 to end
print(my_list[5:])
# elements beginning to end
print(my_list[:])
出力
['o', 'g', 'r'] ['a', 'm', 'i', 'z'] ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']
注: リストをスライスすると、開始インデックスは包括的ですが、終了インデックスは排他的です。例:my_list[2: 5]
インデックス 2、3、4 の要素を含むリストを返しますが、5 は返しません。
リスト要素の追加/変更
リストはミュータブルです。つまり、文字列やタプルとは異なり、リストの要素を変更できます。
代入演算子 =
を使用できます アイテムまたはアイテムの範囲を変更します。
# Correcting mistake values in a list
odd = [2, 4, 6, 8]
# change the 1st item
odd[0] = 1
print(odd)
# change 2nd to 4th items
odd[1:4] = [3, 5, 7]
print(odd)
出力
[1, 4, 6, 8] [1, 3, 5, 7]
append()
を使用して、リストに項目を 1 つ追加できます。 メソッドを使用するか、extend()
を使用していくつかのアイテムを追加します メソッド。
# Appending and Extending lists in Python
odd = [1, 3, 5]
odd.append(7)
print(odd)
odd.extend([9, 11, 13])
print(odd)
出力
[1, 3, 5, 7] [1, 3, 5, 7, 9, 11, 13]
+
も使用できます 2 つのリストを結合する演算子。これは連結とも呼ばれます。
*
演算子は、指定された回数だけリストを繰り返します。
# Concatenating and repeating lists
odd = [1, 3, 5]
print(odd + [9, 7, 5])
print(["re"] * 3)
出力
[1, 3, 5, 9, 7, 5] ['re', 're', 're']
さらに、メソッド insert()
を使用して、目的の場所に 1 つの項目を挿入できます。 または、リストの空のスライスに絞り込んで複数の項目を挿入します。
# Demonstration of list insert() method
odd = [1, 9]
odd.insert(1,3)
print(odd)
odd[2:2] = [5, 7]
print(odd)
出力
[1, 3, 9] [1, 3, 5, 7, 9]
リスト要素を削除
Python の del ステートメントを使用して、リストから 1 つまたは複数の項目を削除できます。リストを完全に削除することもできます。
# Deleting list items
my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
# delete one item
del my_list[2]
print(my_list)
# delete multiple items
del my_list[1:5]
print(my_list)
# delete the entire list
del my_list
# Error: List not defined
print(my_list)
出力
['p', 'r', 'b', 'l', 'e', 'm'] ['p', 'm'] Traceback (most recent call last): File "<string>", line 18, in <module> NameError: name 'my_list' is not defined
remove()
を使用できます 指定されたアイテムまたは pop()
を削除するには 指定されたインデックスのアイテムを削除します。
pop()
インデックスが指定されていない場合、メソッドは最後のアイテムを削除して返します。これは、リストをスタック (先入れ後出しのデータ構造) として実装するのに役立ちます。
そして、リスト全体を空にする必要がある場合は、 clear()
を使用できます メソッド。
my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')
# Output: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)
# Output: 'o'
print(my_list.pop(1))
# Output: ['r', 'b', 'l', 'e', 'm']
print(my_list)
# Output: 'm'
print(my_list.pop())
# Output: ['r', 'b', 'l', 'e']
print(my_list)
my_list.clear()
# Output: []
print(my_list)
出力
['r', 'o', 'b', 'l', 'e', 'm'] o ['r', 'b', 'l', 'e', 'm'] m ['r', 'b', 'l', 'e'] []
最後に、要素のスライスに空のリストを割り当てることで、リスト内の項目を削除することもできます。
>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']
Python リスト メソッド
Python には、リストの操作を非常に簡単にする便利なリスト メソッドが多数あります。一般的に使用されるリスト メソッドの一部を次に示します。
メソッド | 説明 |
---|---|
append() | リストの最後に要素を追加します |
extend() | リストのすべての要素を別のリストに追加します |
insert() | 定義されたインデックスに項目を挿入します |
remove() | リストからアイテムを削除します |
pop() | 指定されたインデックスの要素を返し、削除します |
clear() | リストからすべてのアイテムを削除します |
index() | 最初に一致したアイテムのインデックスを返します |
count() | 引数として渡されたアイテムの数を返します |
sort() | リスト内の項目を昇順で並べ替える |
reverse() | リスト内のアイテムの順序を逆にする |
copy() | リストの浅いコピーを返します |
# Example on Python list methods
my_list = [3, 8, 1, 6, 8, 8, 4]
# Add 'a' to the end
my_list.append('a')
# Output: [3, 8, 1, 6, 0, 8, 4, 'a']
print(my_list)
# Index of first occurrence of 8
print(my_list.index(8)) # Output: 1
# Count of 8 in the list
print(my_list.count(8)) # Output: 3
リスト内包表記:リストを作成するエレガントな方法
リスト内包表記は、Python で既存のリストから新しいリストを作成するエレガントで簡潔な方法です。
リスト内包表記は、式とそれに続く角括弧内の for ステートメントで構成されます。
以下は、各項目が 2 のべき乗で増加するリストを作成する例です。
pow2 = [2 ** x for x in range(10)]
print(pow2)
出力
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
このコードは以下と同等です:
pow2 = []
for x in range(10):
pow2.append(2 ** x)
リスト内包表記には、オプションでさらに for
を含めることができます または if ステートメント。オプションの if
ステートメントは、新しいリストの項目を除外できます。以下にいくつかの例を示します。
>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']
詳細については、Python リスト内包表記をご覧ください。
Python でのその他のリスト操作
リスト メンバーシップ テスト
キーワード in
を使用して、アイテムがリストに存在するかどうかをテストできます .
my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']
# Output: True
print('p' in my_list)
# Output: False
print('a' in my_list)
# Output: True
print('c' not in my_list)
出力
True False True
リストの繰り返し
for
を使用する リスト内の各項目を反復できるループです。
for fruit in ['apple','banana','mango']:
print("I like",fruit)
出力
I like apple I like banana I like mango
Python