「Pythonの基礎 - リストの作成と操作」の版間の差分
細 (Wiki がページ「リストの作成と操作(Python)」を「Pythonの基礎 - リストの作成と操作」に、リダイレクトを残さずに移動しました) |
編集の要約なし |
||
(同じ利用者による、間の1版が非表示) | |||
10行目: | 10行目: | ||
Pythonのリストを作成するには、角括弧[]を使用する。 | Pythonのリストを作成するには、角括弧[]を使用する。 | ||
この中に、カンマを使用して要素を区切って記述する。 | この中に、カンマを使用して要素を区切って記述する。 | ||
< | <syntaxhighlight lang="python"> | ||
a = [1, 2, 3, 4, 5] | a = [1, 2, 3, 4, 5] | ||
b = [6, 7, 8, "apple", "python"] | b = [6, 7, 8, "apple", "python"] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== list関数でリストを作成する ===== | ===== list関数でリストを作成する ===== | ||
上記のように、リストは角括弧[]で要素を括ることで作成できるが、list関数を使用してリストを作成する方法もある。<br> | 上記のように、リストは角括弧[]で要素を括ることで作成できるが、list関数を使用してリストを作成する方法もある。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = list() | x = list() | ||
y = list("python") | y = list("python") | ||
26行目: | 26行目: | ||
[] | [] | ||
['P', 'y', 't', 'h', 'o', 'n'] | ['P', 'y', 't', 'h', 'o', 'n'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== インデックスを指定しリストの要素を取り出す ===== | ===== インデックスを指定しリストの要素を取り出す ===== | ||
インデックスを使用して、リストから要素を取り出すには、その中に取り出したいインデックスを指定する。<br> | インデックスを使用して、リストから要素を取り出すには、その中に取り出したいインデックスを指定する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["a", "b", "c", "d", "e"] | a = ["a", "b", "c", "d", "e"] | ||
print(a[0]) | print(a[0]) | ||
42行目: | 42行目: | ||
e | e | ||
d | d | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== リストのスライス ===== | ===== リストのスライス ===== | ||
要素のスライスも文字列と同様にできる。また、範囲指定して取り出すこともできる。<br> | 要素のスライスも文字列と同様にできる。また、範囲指定して取り出すこともできる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] | a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] | ||
print(a[0:3]) | print(a[0:3]) | ||
62行目: | 62行目: | ||
['a', 'c', 'e', 'g', 'i'] | ['a', 'c', 'e', 'g', 'i'] | ||
['j', 'h', 'f', 'd', 'b'] | ['j', 'h', 'f', 'd', 'b'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== リストのリスト – リストの入れ子 ===== | ===== リストのリスト – リストの入れ子 ===== | ||
68行目: | 68行目: | ||
以下のように、リストxとyは、それぞれ文字列と数字のリストになっている。<br> | 以下のように、リストxとyは、それぞれ文字列と数字のリストになっている。<br> | ||
リストzは、数値、文字列、そしてリストx、yを要素に持つリストになっている。<br> | リストzは、数値、文字列、そしてリストx、yを要素に持つリストになっている。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = ["Twitter","Facebook","LINE"] | x = ["Twitter","Facebook","LINE"] | ||
y = [100, 200, 300] | y = [100, 200, 300] | ||
81行目: | 81行目: | ||
['Twitter', 'Facebook', 'LINE'] | ['Twitter', 'Facebook', 'LINE'] | ||
100 | 100 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== リストの要素の削除 ===== | ===== リストの要素の削除 ===== | ||
上記に続けて、delキーワードを使用してインデックスで指定した要素を削除する。<br> | 上記に続けて、delキーワードを使用してインデックスで指定した要素を削除する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = ["Twitter","Facebook","LINE"] | x = ["Twitter","Facebook","LINE"] | ||
y = [100, 200, 300] | y = [100, 200, 300] | ||
96行目: | 96行目: | ||
# 出力 | # 出力 | ||
[1, 2, 'apple', ['Twitter', 'Facebook', 'LINE'], [200, 300]] | [1, 2, 'apple', ['Twitter', 'Facebook', 'LINE'], [200, 300]] | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
107行目: | 107行目: | ||
リストに要素を加える方法として、append関数がある。<br> | リストに要素を加える方法として、append関数がある。<br> | ||
これを利用することで、リストの末尾に要素を1つずつ加えることができる。<br> | これを利用することで、リストの末尾に要素を1つずつ加えることができる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
lang = ["C", "C++", "Java", "PHP", "Ruby"] | lang = ["C", "C++", "Java", "PHP", "Ruby"] | ||
lang.append("python") | lang.append("python") | ||
114行目: | 114行目: | ||
# 出力 | # 出力 | ||
['C', 'C++', 'Java', 'PHP', 'Ruby', 'Python'] | ['C', 'C++', 'Java', 'PHP', 'Ruby', 'Python'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== extend関数でリストを結合する ===== | ===== extend関数でリストを結合する ===== | ||
2つのリストを結合する場合は、extend関数を使用する。<br> | 2つのリストを結合する場合は、extend関数を使用する。<br> | ||
また、+=演算子を使用して結合することもできる。<br> | また、+=演算子を使用して結合することもできる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
l = [1, 2, 3] | l = [1, 2, 3] | ||
m = [10, 20, 30] | m = [10, 20, 30] | ||
127行目: | 127行目: | ||
# 出力 | # 出力 | ||
[1, 2, 3, 10, 20, 30] | [1, 2, 3, 10, 20, 30] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== insert関数で要素を追加する ===== | ===== insert関数で要素を追加する ===== | ||
insert関数を使用すれば、インデックスを使用してリスト中の指定の位置に要素を追加することができる。<br> | insert関数を使用すれば、インデックスを使用してリスト中の指定の位置に要素を追加することができる。<br> | ||
< | インデックスの最初の要素は<code>0</code>から始まる。<br> | ||
<syntaxhighlight lang="python"> | |||
lang = ["C", "C++", "Java", "PHP", "Ruby"] | lang = ["C", "C++", "Java", "PHP", "Ruby"] | ||
lang.insert(2, "Python") | lang.insert(2, "Python") | ||
138行目: | 139行目: | ||
# 出力 | # 出力 | ||
['C', 'C++', 'Python', 'Java', 'PHP', 'Ruby'] | ['C', 'C++', 'Python', 'Java', 'PHP', 'Ruby'] | ||
</ | </syntaxhighlight> | ||
<br> | |||
===== スライス機能 ===== | |||
開始インデックスと終了インデックスを指定して、リストの指定した範囲の要素を別の要素と入れ替えることができるが、<br> | |||
開始インデックスと終了インデックスに共に新しい要素を挿入するインデックスを指定することにより、要素を指定した位置に挿入することができる。<br> | |||
<br> | |||
右辺に指定したリストを、リストの指定したインデックスの要素の前に挿入する。<br> | |||
<syntaxhighlight lang="python"> | |||
mylist = ["a", "b", "c"] | |||
addlist = ["d", "e"] | |||
# 別のリストををインデックス1の前に挿入 | |||
mylist[1:1] = addlist | |||
print(mylist) | |||
# 出力 | |||
['a', 'd', 'e', 'b', 'c'] | |||
</syntaxhighlight> | |||
<br> | <br> | ||
===== remove関数で要素を削除する ===== | ===== remove関数で要素を削除する ===== | ||
remove関数を使用すれば、削除したい要素のインデックスが不明でも、要素そのものを指定してリストから削除することができる。<br> | remove関数を使用すれば、削除したい要素のインデックスが不明でも、要素そのものを指定してリストから削除することができる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
lang = ["C", "C++", "Java", "PHP", "Ruby"] | lang = ["C", "C++", "Java", "PHP", "Ruby"] | ||
lang.remove("Java") | lang.remove("Java") | ||
149行目: | 167行目: | ||
# 出力 | # 出力 | ||
['C', 'C++', 'PHP', 'Ruby'] | ['C', 'C++', 'PHP', 'Ruby'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== pop関数で要素を取り出し削除する ===== | ===== pop関数で要素を取り出し削除する ===== | ||
155行目: | 173行目: | ||
以下の例では、インデックス2の要素をpop関数で削除している。<br> | 以下の例では、インデックス2の要素をpop関数で削除している。<br> | ||
また、インデックスを指定せずにpop関数を実行する場合、末尾の要素が削除される。これは、pop(-1)と記述しても同様である。<br> | また、インデックスを指定せずにpop関数を実行する場合、末尾の要素が削除される。これは、pop(-1)と記述しても同様である。<br> | ||
< | <syntaxhighlight lang="python"> | ||
strnum = ["one", "two", "three", "four"] | strnum = ["one", "two", "three", "four"] | ||
strnum.pop(2) | strnum.pop(2) | ||
166行目: | 184行目: | ||
['one', 'two', 'four'] | ['one', 'two', 'four'] | ||
['one', 'two'] | ['one', 'two'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== index関数で要素の位置を調べる ===== | ===== index関数で要素の位置を調べる ===== | ||
リストの中のある要素が、どのインデックスにあるのかを調べるには、index関数を使用する。<br> | リストの中のある要素が、どのインデックスにあるのかを調べるには、index関数を使用する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | ||
x.index(6) | x.index(6) | ||
177行目: | 195行目: | ||
# 出力 | # 出力 | ||
5 | 5 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== in演算子で要素の有無を調べる ===== | ===== in演算子で要素の有無を調べる ===== | ||
リストの中に要素が入っているかを調べるには、in演算子を使用する。<br> | リストの中に要素が入っているかを調べるには、in演算子を使用する。<br> | ||
要素が存在する場合はTrue、存在しない場合はFalseを返す。<br> | 要素が存在する場合はTrue、存在しない場合はFalseを返す。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | ||
print(7 in x) | print(7 in x) | ||
190行目: | 208行目: | ||
True | True | ||
False | False | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== sort関数、reverse関数で並び替える ===== | ===== sort関数、reverse関数で並び替える ===== | ||
196行目: | 214行目: | ||
また、sort関数で降順ソートする場合は、reverseオプションにTrueを指定する。<br> | また、sort関数で降順ソートする場合は、reverseオプションにTrueを指定する。<br> | ||
sort関数およびreverse関数を使用すると、表示を並び替えるというのではなく、リスト自体の要素を並び替えて変更する。<br> | sort関数およびreverse関数を使用すると、表示を並び替えるというのではなく、リスト自体の要素を並び替えて変更する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | ||
print(x.sort()) | print(x.sort()) | ||
206行目: | 224行目: | ||
[9, 7, 6, 5, 5, 4, 4, 4, 3, 3, 2, 1] | [9, 7, 6, 5, 5, 4, 4, 4, 3, 3, 2, 1] | ||
[1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9] | [1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== count関数で特定の要素の個数を数える ===== | ===== count関数で特定の要素の個数を数える ===== | ||
リスト内に特定のデータがいくつ格納されているか調べる場合は、count関数を使用する。<br> | リスト内に特定のデータがいくつ格納されているか調べる場合は、count関数を使用する。<br> | ||
以下の例では、4が3つ存在する。<br> | 以下の例では、4が3つ存在する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | ||
x.count(4) | x.count(4) | ||
218行目: | 236行目: | ||
# 出力 | # 出力 | ||
3 | 3 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== split関数で分割した後、join関数で結合する ===== | ===== split関数で分割した後、join関数で結合する ===== | ||
225行目: | 243行目: | ||
<br> | <br> | ||
以下の例では、まず、セパレータをスペース(" ")で分割してリスト化した後、再びjoin関数で結合している。<br> | 以下の例では、まず、セパレータをスペース(" ")で分割してリスト化した後、再びjoin関数で結合している。<br> | ||
< | <syntaxhighlight lang="python"> | ||
s = "I am playing with Python." | s = "I am playing with Python." | ||
237行目: | 255行目: | ||
['I', 'am', 'playing', 'with', 'Python.'] | ['I', 'am', 'playing', 'with', 'Python.'] | ||
I am playing with Python. | I am playing with Python. | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
===== len関数で要素数を調べる ===== | ===== len関数で要素数を調べる ===== | ||
リストに含まれている要素の数を数えるにはlen関数を使用する。<br> | リストに含まれている要素の数を数えるにはlen関数を使用する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9] | ||
print(len(x)) | print(len(x)) | ||
247行目: | 265行目: | ||
# 出力 | # 出力 | ||
13 | 13 | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
264行目: | 282行目: | ||
代入演算子を使用する場合、リストaとbは、メモリの同一のアドレスに格納されているデータを参照するので、<br> | 代入演算子を使用する場合、リストaとbは、メモリの同一のアドレスに格納されているデータを参照するので、<br> | ||
リストaの内容を変更するとリストbの内容も変化する。<br> | リストaの内容を変更するとリストbの内容も変化する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["YouTube", "Instagram", "LINE"] | a = ["YouTube", "Instagram", "LINE"] | ||
b = a | b = a | ||
274行目: | 292行目: | ||
['Youtube', 'Twitter', 'LINE'] | ['Youtube', 'Twitter', 'LINE'] | ||
['Youtube', 'Twitter', 'LINE'] | ['Youtube', 'Twitter', 'LINE'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
また、リストaもbも同一のアドレスを参照しているかどうかは、id関数を使用して調べることができる。<br> | また、リストaもbも同一のアドレスを参照しているかどうかは、id関数を使用して調べることができる。<br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["YouTube", "Instagram", "LINE"] | a = ["YouTube", "Instagram", "LINE"] | ||
b = a | b = a | ||
286行目: | 304行目: | ||
4495475016 | 4495475016 | ||
4495475016 | 4495475016 | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
'''copy関数を使用してコピーする(list関数とスライスも含む)'''<br> | '''copy関数を使用してコピーする(list関数とスライスも含む)'''<br> | ||
コピーしたリストが同一のアドレスを参照するものではなく、独立した別のデータとして扱うには、copy関数を使用する。<br> | コピーしたリストが同一のアドレスを参照するものではなく、独立した別のデータとして扱うには、copy関数を使用する。<br> | ||
また、同じことができるlist関数とスライス[:]も併せて使用する。<br> | また、同じことができるlist関数とスライス[:]も併せて使用する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["YouTube", "Instagram", "LINE"] | a = ["YouTube", "Instagram", "LINE"] | ||
b = a.copy() | b = a.copy() | ||
301行目: | 319行目: | ||
['YouTube', 'Twitter', 'LINE'] | ['YouTube', 'Twitter', 'LINE'] | ||
['YouTube', 'Instagram', 'LINE'] | ['YouTube', 'Instagram', 'LINE'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["YouTube", "Instagram", "LINE"] | a = ["YouTube", "Instagram", "LINE"] | ||
b = list(a) | b = list(a) | ||
313行目: | 331行目: | ||
['YouTube', 'Twitter', 'LINE'] | ['YouTube', 'Twitter', 'LINE'] | ||
['YouTube', 'Instagram', 'LINE'] | ['YouTube', 'Instagram', 'LINE'] | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="python"> | ||
a = ["YouTube", "Instagram", "LINE"] | a = ["YouTube", "Instagram", "LINE"] | ||
b = a[:] | b = a[:] | ||
325行目: | 343行目: | ||
['YouTube', 'Twitter', 'LINE'] | ['YouTube', 'Twitter', 'LINE'] | ||
['YouTube', 'Instagram', 'LINE'] | ['YouTube', 'Instagram', 'LINE'] | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Python]] | [[カテゴリ:Python]] |
2021年11月15日 (月) 03:51時点における最新版
概要
ここでは、リスト型のデータを扱う。
リストは、0個以上の複数のデータを一覧にして管理することができる。
Pythonのリスト型は、異なる種類のデータ型を格納できる。
リストの作成とインデックス
リスト型変数の宣言
Pythonのリストを作成するには、角括弧[]を使用する。 この中に、カンマを使用して要素を区切って記述する。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, "apple", "python"]
list関数でリストを作成する
上記のように、リストは角括弧[]で要素を括ることで作成できるが、list関数を使用してリストを作成する方法もある。
x = list()
y = list("python")
print(x)
print(y)
# 出力
[]
['P', 'y', 't', 'h', 'o', 'n']
インデックスを指定しリストの要素を取り出す
インデックスを使用して、リストから要素を取り出すには、その中に取り出したいインデックスを指定する。
a = ["a", "b", "c", "d", "e"]
print(a[0])
print(a[1])
print(a[-1])
print(a[-2])
# 出力
a
b
e
d
リストのスライス
要素のスライスも文字列と同様にできる。また、範囲指定して取り出すこともできる。
a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
print(a[0:3])
print(a[:3])
print(a[6:])
print(a[:])
print(a[::2]
print(a[::-2])
# 出力
['a', 'b', 'c']
['a', 'b', 'c']
['g'. 'h', 'i', 'j']
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
['a', 'c', 'e', 'g', 'i']
['j', 'h', 'f', 'd', 'b']
リストのリスト – リストの入れ子
リストには全ての型を入れることができるので、リストを入れ子構造で作成することもできる。
以下のように、リストxとyは、それぞれ文字列と数字のリストになっている。
リストzは、数値、文字列、そしてリストx、yを要素に持つリストになっている。
x = ["Twitter","Facebook","LINE"]
y = [100, 200, 300]
z = [1, 2, "apple", x, y]
print(z)
print(z[3])
print([4][0])
# 出力
[1, 2, 'apple', ['Twitter', 'Facebook', 'LINE'], [100, 200, 300]]
['Twitter', 'Facebook', 'LINE']
100
リストの要素の削除
上記に続けて、delキーワードを使用してインデックスで指定した要素を削除する。
x = ["Twitter","Facebook","LINE"]
y = [100, 200, 300]
z = [1, 2, "apple", x, y]
del z[4][0]
print(z)
# 出力
[1, 2, 'apple', ['Twitter', 'Facebook', 'LINE'], [200, 300]]
リストのメソッド(append関数 pop関数 count関数 sort関数など)
上記のように、リストは角括弧[]で要素を囲んで作成した。また、インデックスを使用して抽出、スライスを行った。
リストには他にも様々なメソッドが用意されている。
ここでは、リストにおいて、より使用するメソッドについて扱う。
append関数で末尾に要素を追加する
リストに要素を加える方法として、append関数がある。
これを利用することで、リストの末尾に要素を1つずつ加えることができる。
lang = ["C", "C++", "Java", "PHP", "Ruby"]
lang.append("python")
print(lang)
# 出力
['C', 'C++', 'Java', 'PHP', 'Ruby', 'Python']
extend関数でリストを結合する
2つのリストを結合する場合は、extend関数を使用する。
また、+=演算子を使用して結合することもできる。
l = [1, 2, 3]
m = [10, 20, 30]
l.extend(m)
print(l)
# 出力
[1, 2, 3, 10, 20, 30]
insert関数で要素を追加する
insert関数を使用すれば、インデックスを使用してリスト中の指定の位置に要素を追加することができる。
インデックスの最初の要素は0
から始まる。
lang = ["C", "C++", "Java", "PHP", "Ruby"]
lang.insert(2, "Python")
print(lang)
# 出力
['C', 'C++', 'Python', 'Java', 'PHP', 'Ruby']
スライス機能
開始インデックスと終了インデックスを指定して、リストの指定した範囲の要素を別の要素と入れ替えることができるが、
開始インデックスと終了インデックスに共に新しい要素を挿入するインデックスを指定することにより、要素を指定した位置に挿入することができる。
右辺に指定したリストを、リストの指定したインデックスの要素の前に挿入する。
mylist = ["a", "b", "c"]
addlist = ["d", "e"]
# 別のリストををインデックス1の前に挿入
mylist[1:1] = addlist
print(mylist)
# 出力
['a', 'd', 'e', 'b', 'c']
remove関数で要素を削除する
remove関数を使用すれば、削除したい要素のインデックスが不明でも、要素そのものを指定してリストから削除することができる。
lang = ["C", "C++", "Java", "PHP", "Ruby"]
lang.remove("Java")
print(lang)
# 出力
['C', 'C++', 'PHP', 'Ruby']
pop関数で要素を取り出し削除する
pop関数を使用すれば、インデックスを指定して要素を取り出し削除することができる。
以下の例では、インデックス2の要素をpop関数で削除している。
また、インデックスを指定せずにpop関数を実行する場合、末尾の要素が削除される。これは、pop(-1)と記述しても同様である。
strnum = ["one", "two", "three", "four"]
strnum.pop(2)
print(strnum)
strnum.pop()
print(strnum)
# 出力
['one', 'two', 'four']
['one', 'two']
index関数で要素の位置を調べる
リストの中のある要素が、どのインデックスにあるのかを調べるには、index関数を使用する。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
x.index(6)
print(x)
# 出力
5
in演算子で要素の有無を調べる
リストの中に要素が入っているかを調べるには、in演算子を使用する。
要素が存在する場合はTrue、存在しない場合はFalseを返す。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
print(7 in x)
print(8 in x)
# 出力
True
False
sort関数、reverse関数で並び替える
リストの要素を並び替える場合は、昇順ならsort関数、降順ならreverse関数を使用する。
また、sort関数で降順ソートする場合は、reverseオプションにTrueを指定する。
sort関数およびreverse関数を使用すると、表示を並び替えるというのではなく、リスト自体の要素を並び替えて変更する。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
print(x.sort())
print(x.sort(reverse=True))
print(x.reverse())
# 出力
[1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9]
[9, 7, 6, 5, 5, 4, 4, 4, 3, 3, 2, 1]
[1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9]
count関数で特定の要素の個数を数える
リスト内に特定のデータがいくつ格納されているか調べる場合は、count関数を使用する。
以下の例では、4が3つ存在する。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
x.count(4)
print(x)
# 出力
3
split関数で分割した後、join関数で結合する
文字列をセパレータで分割してリストに格納し、そのリストから再び文字列に結合する。
split関数で分割した後、再びjoin関数で結合する。
以下の例では、まず、セパレータをスペース(" ")で分割してリスト化した後、再びjoin関数で結合している。
s = "I am playing with Python."
list_split = s.split(" ")
print(list_split)
j = " ".join(list_split)
print(j)
# 出力
['I', 'am', 'playing', 'with', 'Python.']
I am playing with Python.
len関数で要素数を調べる
リストに含まれている要素の数を数えるにはlen関数を使用する。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
print(len(x))
# 出力
13
リストのコピーと注意点
注意点
リストをコピーする際に注意する点がある。
リストのコピーには、そのリストをコピーしたものがもう1つの独立したリストとして扱える形になったり、
コピーしてもコピー元のデータが変わるとコピー先のデータも変化するパターンがある。
これは、メモリの内部的な参照先が同じデータであるか、独立したものであるかの違いがあるからである。
リストをコピーする
リストのコピーの方法はいくつか存在する。
代入演算子(=)を使用してコピーする
代入演算子を使用する場合、リストaとbは、メモリの同一のアドレスに格納されているデータを参照するので、
リストaの内容を変更するとリストbの内容も変化する。
a = ["YouTube", "Instagram", "LINE"]
b = a
a[1] = "Twitter"
print(a)
print(b)
# 出力
['Youtube', 'Twitter', 'LINE']
['Youtube', 'Twitter', 'LINE']
また、リストaもbも同一のアドレスを参照しているかどうかは、id関数を使用して調べることができる。
a = ["YouTube", "Instagram", "LINE"]
b = a
id(a)
id(b)
# 出力
4495475016
4495475016
copy関数を使用してコピーする(list関数とスライスも含む)
コピーしたリストが同一のアドレスを参照するものではなく、独立した別のデータとして扱うには、copy関数を使用する。
また、同じことができるlist関数とスライス[:]も併せて使用する。
a = ["YouTube", "Instagram", "LINE"]
b = a.copy()
a[1] = "Twitter"
print(a)
print(b)
# 出力
['YouTube', 'Twitter', 'LINE']
['YouTube', 'Instagram', 'LINE']
a = ["YouTube", "Instagram", "LINE"]
b = list(a)
a[1] = "Twitter"
print(a)
print(b)
# 出力
['YouTube', 'Twitter', 'LINE']
['YouTube', 'Instagram', 'LINE']
a = ["YouTube", "Instagram", "LINE"]
b = a[:]
a[1] = "Twitter"
print(a)
print(b)
# 出力
['YouTube', 'Twitter', 'LINE']
['YouTube', 'Instagram', 'LINE']