Python リストの仕組みと使い方のサンプル(list)

目次

リストとは

a = [ 値1 , 値2 , 値3 ]

上記は複数の値を変数aに代入しています。
この変数aはリストとして複数の値を持ちます。

 

リストの変数の図

  • 1つの変数で複数の値を保持できます。
    →各項目を要素(element)といいます。
  • 要素の順序をインデックス(添字)で管理します。上記図では[0]、[1]、[2]、[3]がインデックスです。
  • インデックスは0から始まります。
  • それぞれの値はインデックスを指定してアクセスします。
    →例:変数[0]
  • インデックスを-1にすると最後の要素が指定されます。
  • 以下はPythonの公式ドキュメントのリストのリンクです。
    https://docs.python.jp/3/tutorial/datastructures.html

 

リテラルでリストを作成

# coding: utf-8

a = ["A","B","C"]

print (a) # ['A', 'B', 'C']
print (a[0]) #A
print (a[1]) #B
print (a[2]) #C
print (a[-1]) #C

3行目は、リテラルでリストを作成しています。リテラルとはコード中に記述された値です。
9行目の-1は、最後の要素を表します。

 

リストに複数のデータ型をセットできる

リストに複数のデータ型をセットできます。

# coding: utf-8

a = ["A",1,True];

print (a[0]) #A
print (a[1]) #1
print (a[2]) #True

 

文字列をリストにする

listメソッドは、文字列をリストにします。

# coding: utf-8

a = "123"
b = list(a)

print(b)  # ['1', '2', '3']

c = "abc,def"
d = list(c)

print(d)  # ['a', 'b', 'c', ',', 'd', 'e', 'f']

 

ifとin (指定の要素が存在するか)

if 要素 in リスト
# coding: utf-8

arr1 = ["1","2","3"]
b = "2"
c = "100"

if b in arr1:
	print("OK1") #表示される

if c in arr1:
	print("OK2")
else:
	print("NG2") #表示される

 

index (特定の要素の位置を確認する)

list.index(x[, start[, end]])

指定の要素が何番目にあるかを返します。

# coding: utf-8

a = ["A","B","C"]

print (a.index("A")) # 0
print (a.index("B")) # 1
print (a.index("C")) # 2

 

スライス (一部の要素を取り出す)

リスト名[ 最初の要素のインデックス:取り出す最後の要素のインデックス+1]
リスト名[ 最初の要素のインデックス:取り出す最後の要素のインデックス+1:ステップ]

リストの一部の要素を取り出すことができます。スライスといいます。
指定する最初のインデックスと最後のインデックスをコロン(:)で区切り全体を角括弧でくくります。

# coding: utf-8

a = [1,2,3,4,5,6,7]

print (a[0:2]) #[1, 2] 
print (a[1:2]) #[2]
print (a[2:5]) #[3, 4, 5]
print (a[:2]) #[1, 2] 左側の値を省略
print (a[2:]) #[3, 4, 5, 6, 7] 右側の値を省略
print (a[:-1]) #[1, 2, 3, 4, 5, 6] マイナスの値
print (a[::2]) #[1, 3, 5, 7] ステップを使用

8行目は、コロン(:)の左側を省略した場合、最初の要素から取り出します。
9行目は、コロン(:)の右側を省略した場合、最後の要素まで取り出します。
10行目は、コロン(:)の右側にマイナスの値を指定すると最後尾から数えて取り出します。
11行目は、コロン(:)の右側にもうひとつコロン(:)と値を指定するとリストの要素を2つおき、3つおき取り出すというような指定ができます。ステップといいます。

 

len 要素数を取得

# coding: utf-8

c1 = ["A","B","C"]

print(len(c1)) # 3

 

filter (関数でリストの値を判定して返す)

filter (関数, リスト)
# coding: utf-8

list1 = [10, 2, 8, 21]

def getNum(x):
    return x > 9

list2 = list(filter(getNum, list1))
print(list2)  # [10, 21]を表示する

5,6行目は関数です。9より大きい値を返します。
8行目は、filterがあります。5行目の関数getNumを引数list1で呼び出しています。
9行目は、5,6行目の関数の結果の値が表示されます。

 

リストの要素の数値で計算できる

インデックスを指定して計算できます。

# coding: utf-8

a = [2,3]

print (a[0] + a[1]) #5 足し算
print (a[0] - a[1]) #-1 引き算
print (a[0] * a[1]) #6 掛け算
print (a[0] / a[1]) #0.6666666666666666 割り算

 

max,min,sum (リストの要素の数値の最大値、最小値、合計)

# coding: utf-8

a = [2,8,3]

print (max(a)) # 8 最大値
print (min(a)) # 2 最小値
print (sum(a)) # 13 合計

 

リストの値を変数にセット

リストの値を各変数にセットできます。

# coding: utf-8

a = ["1","2","3"]
b,c,d = a

print (b) # 1
print (c) # 2
print (d) # 3

 

join (リストの値の文字を結合する)

# coding: utf-8

a = ["A","B","C"]

print(",".join(a)) # A,B,C
print("".join(a)) # ABC

6行目は、引数が空文字です。その場合リストの値がつめて結合されます。

 

リストを比較 (==で比較)

==でリストが同じか比較します。
!=でリストが同じでないこと(異なっていればtrueになる)を比較します。

# coding: utf-8

a = ["1","2","3"]
b = ["1","2","3"]
c = ["1","100","3"]

if a == b:
	print("same") #表示される

if a != c:
	print("different") #表示される

 

append (末尾に要素を追加)

# coding: utf-8

a = ["A","B","C"]
a.append("Z")

print (a) # ['A', 'B', 'C', 'Z']

 

insert (指定の位置に要素を追加)

1つめの引数の位置に2つめの引数の値を追加します。

# coding: utf-8

a = ["A","B","C"]
a.insert(2,"Z")

print (a) # ['A', 'B', 'Z', 'C']

 

要素の値を変更 (インデックスを指定)

インデックスを指定して要素の値を変更します。

# coding: utf-8

a = ["A","B","C"]
a[1] = "Z"

print (a) # ['A', 'Z', 'C']

 

del (インデックスを指定して要素を削除)

# coding: utf-8

a = ["A","B","C"]
del a[1]

print (a) # ['A', 'C']

 

remove (値を指定して要素を削除)

# coding: utf-8

a = ["A","B","C"]
a.remove ("B")

print (a) # ['A', 'C']

 

pop (インデックスを指定して要素を削除+削除した値を返す)

popメソッドは削除した値を返します。

# coding: utf-8

a = ["A","B","C"]
b = a.pop(1)

print (a) # ['A','C']
print (b) # B

 

reverse (逆順に並べる)

# coding: utf-8

a = ["A","B","C"]
a.reverse()

print (a) # ['C', 'B', 'A']

 

sort (数値を小さい順に並べる)

# coding: utf-8

a = [300, 20, 500]
a.sort()

print (a) # [20, 300, 500]

 

sorted (数値を小さい順に並べる+新しいリストを返す)

sortとの違いは新しいリストを返します。

# coding: utf-8

a = [300, 20, 500]
b = sorted(a)

print (b) # [20, 300, 500]
print (a) # [300, 20, 500]

6行目は、新しい並び替えられたリストです。
7行目は、元のリストです。

 

+演算子 (リストを連結する)

# coding: utf-8

a = [1,2]
b = [3,4]
c = ["a","b"]

print (a + b + c) #[1, 2, 3, 4, 'a', 'b']

 

copy (リストをコピーする)

# coding: utf-8

a = ["A","B","C"]
b = a.copy()

b[1] = "Z"

print (a) # ['A', 'B', 'C']
print (b) # ['A', 'Z', 'C']

6行目は、コピー先のリストの値を変更しています。
8行目は、コピー元のリストです。値は変更されていません。
9行目は、コピー先のリストです。値は変更されています。

 

extend (リストとリストを連結する)

# coding: utf-8

a = ["A1", "B1", "C1"]
b = ["D1", "E1", "F1"]

a.extend(b)

print(a)  # ['A1', 'B1', 'C1', 'D1', 'E1', 'F1']

 

リストの中にリストを作成する

# coding: utf-8

a = ["A","B","C"]
b = ["D","E","F"]

c = [a,b]

print (c[0]) # ['A', 'B', 'C']
print (c[1]) # ['D', 'E', 'F']

print (c[0][0]) # A
print (c[0][1]) # B
print (c[0][2]) # C
print (c[1][0]) # D
print (c[1][1]) # E
print (c[1][2]) # F

 

入れ子の構造のリストを作成する

# coding: utf-8

a = [
"number",
["1","2","3"],
["4","5","6"]
]

print (a[0]) #number
print (a[1]) #['1', '2', '3']
print (a[2]) #['4', '5', '6']

print (a[1][0]) # 1
print (a[1][1]) # 2
print (a[1][2]) # 3
print (a[2][0]) # 4
print (a[2][1]) # 5
print (a[2][2]) # 6

関連の記事

Python タプルの仕組みと使い方のサンプル(tuple)
Python ディクショナリの仕組みと使い方(dictionary)
Python セットの仕組みと使い方のサンプル(set)

△上に戻る