Python 配列(リスト)
他のプログラミング言語で「配列」への代入がありますが、Pythonでは「リスト」と「タプル」の2種類があります。
PHPでの配列については「PHP 配列-連想配列」を参照ください。
今回はPythonでの配列である「リスト」を解説します。
この記事の著者 ->S.E; です。
メインとしている言語はPHPですが、この先、機械学習やAIなどで利用されているPythonを習得したいと考えています。
このページは「ゼロから始めるPythonプログラミング学習」としてPythonの基本的な部分から学習を始めたいと思います。
最終的にはWebでの利用やアプリの開発、機械学習、AI、簡単なゲームなどのプログラミングを目指したいと思います。
また、参考になる書籍なども紹介しています。
配列とは?
変数では、例えば変数「str」に対して、文字列や整数など1つの情報しか格納することができませんが、配列の場合は変数「str」にたいして複数の情報を格納し呼び出すことができます。
リスト
Pyhtonの配列の一つである「リスト」について解説します。
変数に情報をリストとして格納するには「[…]」を利用し、カンマ区切りで情報を格納します。
格納する情報は整数でも文字列でも構いません。(文字列の場合は「‘」もしくは「“」で文字列を囲む必要があります。)
変数に格納した情報を呼び出す場合は変数名の後に「[]」を記述し呼び出したいインデックス番号を記述します。
この時、変数に格納された最初の情報は「0(ゼロ)」となります。
1 2 3 4 5 | >>> list = [1,2,3,4,'文字列'] >>> list[0] 1 // 結果 >>> list[4] '文字列' // 結果 |
情報の上書き(オーバーライド)
リストはインデックス番号を利用し最初に定義された情報を書き換えることができます。
今回はインデックス番号「1」に格納されている「整数の2」を「整数の200」に置き換えてみます。
1 2 3 4 5 6 | >>> list = [1,2,3,4,'文字列'] >>> list [1, 2, 3, 4, '文字列'] // 上書き前 >>> list[1] = 200 >>> list [1, 200, 3, 4, '文字列'] // 上書き後 |
この様に一度定義された内容を変更することができます。
情報の追加
append()関数
リストに情報を追加するにはappend()関数を利用します。
変数名.append(代入する情報) でリストの最後尾の「代入する情報」が追加されます。
1 2 3 4 | >>> list = [1,2,3,4,'文字列'] >>> list.append(100) >>> list [1, 2, 3, 4, '文字列', 100] // 結果 |
insert()関数
また、リストの任意の場所に情報を追加する場合はinsert()関数を利用します。
変数名.insert(代入したいインデックス番号,代入する情報) でリストの任意の場所に「代入する情報」が追加されます。
1 2 3 4 | >>> list = [1,2,3,4,'文字列'] >>> list.insert(1,100) >>> list [1, 100, 2, 3, 4, '文字列'] |
情報の削除
del文
リスト内の情報を削除する場合はdel文を利用します。
del 変数名[削除するインデックス番号] で任意の情報を削除することができます。
1 2 3 4 | >>> list = [1,2,3,4,'文字列'] >>> del list[0] >>> list [2, 3, 4, '文字列'] // 結果 |
del文を利用する際の注意点としてインデックス番号を指定するブラケット「[]」を記述し忘れると全て削除されてしまします。
1 2 3 4 | >>> list = [1,2,3,4,'文字列'] >>> del list >>> list <class 'list'> // 情報が全て削除される |
pop()関数
del文以外にはpop()関数を利用することでも任意の場所の情報を削除することができます。
変数名.pop(削除したいインデックス番号) でリストの任意の場所の情報を削除します。
1 2 3 4 5 | >>> list = [1,2,3,4,'文字列'] >>> list.pop(4) '文字列' >>> list [1, 2, 3, 4] |
インデックス番号を記述し忘れた場合は、リストの最後尾の情報が削除されます。
1 2 3 4 5 | >>> list = [1,2,3,4,'文字列'] >>> list.pop() '文字列' >>> list [1, 2, 3, 4] |
remove()関数
また、インデックス番号ではなく指定した情報を削除する場合はremove()関数を利用します。
変数名.remove(削除したい情報) で指定の情報が削除されます。指定した情報が複数存在する場合は、リストのインデックス番号が若い順(最初の情報)ものが削除されます。
1 2 3 4 | >>> list = [1,2,3,1,2,3] >>> list.remove(1) >>> list [2, 3, 1, 2, 3] // 結果 |
情報の検索
index()関数
index()関数を利用すると、指定した情報のインデックス番号を返してくれます。
数名.index(探す情報) で検索することができます。指定した情報が複数存在する場合は、リストのインデックス番号が若い(最初の情報)もののインデックス番号が返されます。
1 2 3 | >>> list = [1,2,3,1,2,3] >>> list.index(3) 2 // 結果 |
count()関数
count()関数はリスト内に指定した情報がいくつあるかを返してくれます。
数名.count(探す情報) で件数を数えます。
1 2 3 | >>> list = [1,2,3,1,2,3] >>> list.count(2) 2 // 結果 |
その他の関数
「リスト」で利用できる関数は多数あります。どの様な関すがあるかを調べるのにhelp()関すが用意されています。
今回解説したinsert()やpop()などが含まれています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | >>> help(list) class list(object) | list(iterable=(), /) | | Built-in mutable sequence. | | If no argument is given, the constructor creates a new empty list. | The argument must be an iterable if specified. | | Methods defined here: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return key in self. | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(...) | x.__getitem__(y) <==> x[y] | | __gt__(self, value, /) | Return self>value. | | __iadd__(self, value, /) | Implement self+=value. | | __imul__(self, value, /) | Implement self*=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __mul__(self, value, /) | Return self*value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | __reversed__(self, /) | Return a reverse iterator over the list. | | __rmul__(self, value, /) | Return value*self. | | __setitem__(self, key, value, /) | Set self[key] to value. | | __sizeof__(self, /) | Return the size of the list in memory, in bytes. | | append(self, object, /) | Append object to the end of the list. | | clear(self, /) | Remove all items from list. | | copy(self, /) | Return a shallow copy of the list. | | count(self, value, /) | Return number of occurrences of value. | | extend(self, iterable, /) | Extend list by appending elements from the iterable. | | index(self, value, start=0, stop=9223372036854775807, /) | Return first index of value. | | Raises ValueError if the value is not present. | | insert(self, index, object, /) | Insert object before index. | | pop(self, index=-1, /) | Remove and return item at index (default last). | | Raises IndexError if list is empty or index is out of range. | | remove(self, value, /) | Remove first occurrence of value. | | Raises ValueError if the value is not present. | | reverse(self, /) | Reverse *IN PLACE*. | | sort(self, /, *, key=None, reverse=False) | Sort the list in ascending order and return None. | | The sort is in-place (i.e. the list itself is modified) and stable (i.e. the | order of two equal elements is maintained). | | If a key function is given, apply it once to each list item and sort them, | ascending or descending, according to their function values. | | The reverse flag can be set to sort in descending order. | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __hash__ = None |
配列は利用頻度が高い
他のプログラムでも同じですが、配列は利用頻度が高いので習得しておく必要があります。
解説だけでは完全に理解するのは難しいですが、より実践的なプログラミングをこなすことで習得していけると思います。