リスト型のメソッドを紹介します。どれもよく使います。
簡易表の後に詳細説明や、例を載せています。
簡易表
list.append(x) | 末尾に要素1つ追加 |
list.extend(iterable) | イテラブルの全ての要素を末尾に追加 |
list.insert(i, x) | 位置iにxを挿入 |
list.remove(x) | xを持つ最初の要素を削除 無い場合はエラー |
list.clear() | [](空の状態)にする |
r = list.pop() | 末尾の要素を削除して、その要素を返す |
r = list.pop(i) | リストのi番目の要素を削除して、その要素を返す |
r = list.index(x[, start[, end]]) | 要素xの最初の位置を添字番号で返す start, endはスライス記法 |
r = list.count(x) | 要素xの個数 |
list.sort(key=None, reverse=False) | listを並べ替える keyには並び替え用の関数を指定する |
list.reverse() | listを逆順に並べ替える |
r = list.copy() | リストの浅いコピーを返す |
del文 del 変数 | インデックスを指定して要素を削除 変数名のみの場合は変数が削除される |
追加
list.append(x)
リストの末尾に要素を1つ追加します。
nums = [0, 3, 6, 3]
nums.append(9)
print(nums)
【結果】
[0, 3, 6, 3, 9]
list.extend(iterable)
‘iterable’はイテラブルです。イテラブルの全ての要素を末尾に追加します。
list.extend(iterable)
nums = [0, 3, 6, 3]
nums2 = [12, 15, -6, 54, 18]
nums.extend(nums2)
print(nums)
【結果】
[0, 3, 6, 3, 12, 15, -6, 54, 18]
nums.extend(1)のようにイテラブルでないデータ型を指定すると次のようにTypeErrorが発生します。
Traceback (most recent call last):
File "test.py", line 10, in <module>
nums.extend(1)
TypeError: 'int' object is not iterable
list.insert(i, x)
指定した位置(i)にxを挿入します。
nums = [0, 3, 6, 3]
nums.insert(2, 456)
print(nums)
【結果】
[0, 3, 456, 6, 3]
削除
list.remove(x)
値xを持つ最初の要素を削除します。ない場合はエラーになります。
nums = [0, 3, 6, 3]
nums.remove(3)
print(nums)
【結果】
[0, 6, 3]
list.clear()
リストの全ての要素を削除します。
nums = [0, 3, 6, 3]
nums.clear()
print(nums)
【結果】
[]
取り出し、抽出
list.pop(), list.pop(i)
list.pop()はリストの末尾の要素を削除して、その要素を返します。
list.pop(i)は添字番号iの要素をリストから削除し、その要素を返します。
nums = [0, 3, 6, 3]
r1 = nums.pop()
print(nums)
print(r1)
r2 = nums.pop(2)
print(nums)
print(r2)
【結果】
[0, 3, 6]
3
[0, 3]
6
list.index(x), list.index(x, start), list.index(x, start, end)
要素xの最初の位置を添字番号で返します。該当するものが無ければValueErrorになります。
list.index(x,start)は添字番号startから要素xを探し、該当するものがあれば添字番号を返します。この番号はstart位置からの番号ではなく、listの添字番号と同じです。
list.index(x,start,end)は検索する開始位置と、終了位置を指定できます。startとendはスライス記法として解釈されます。(添字番号ではありません)
nums3 = [0, 3, 6, 3, 0, 3]
r1 = nums3.index(3)
print(r1)
r2 = nums3.index(3, 2)
print(r2)
r3 = nums3.index(0, 1, 5)
print(r3)
【結果】
1
3
4
list.count(x)
リスト内のxの個数を返します。
nums = [0, 3, 6, 3]
n = nums.count(3)
print(n)
【結果】
2
list.sort(key=None, reverse=False)
listの並べ替えができます。
keyには単一の引数を取り、ソートに利用されるデータを返す関数である必要があります。関数オブジェクトでもラムダ式でも可能です。
例ではラムダ式で要素の逆数が小さい順に並べるように指定しています。
nums2 = [12, 15, -6, 54, 18]
nums2.sort()
print(nums2)
nums2.sort(reverse = True)
print(nums2)
nums2.sort(key = lambda x:1/x)
print(nums2)
【結果】
[-6, 12, 15, 18, 54]
[54, 18, 15, 12, -6]
[-6, 54, 18, 15, 12]
list.reverse()
list.reverse()はlist要素を逆順にソートします。動作はlist.sort(reverse = True)と同じです。
nums2 = [12, 15, -6, 54, 18]
nums2.reverse()
print(nums2)
【結果】
[-6, 12, 15, 18, 54]
list.copy()
リストの浅いコピーを返します。a[:]と等価です。
nums = [0, 3, 6, 3]
copied = nums.copy()
print(copied)
【結果】
[0, 3, 6, 3]
del文
インデックスを指定して要素を削除できます。1つ削除、範囲を指定して削除、全削除、変数の削除ができます。
nums4 = [0, 66.25, 333, 333, 3232]
del nums4[3]
print(nums4)
del nums4[-2:-1]
print(nums4)
del nums4[:] #全要素削除
print(nums4)
del nums4 #変数を削除
print(nums4) # この文を実行するとエラーになる
【結果】
[0, 66.25, 333, 3232]
[0, 66.25, 3232]
[]
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(a)
NameError: name 'nums4' is not defined
del文で変数を削除することもできます。変数を削除すると、当然ですが参照でき無くなります。
最後のprint文は削除されたnums4を参照しようとしているので、結果のようにNameErrorになります。
コメントを残す