リスト
リストの初期化
リストとタプルの表現
[…]でリスト(list)を、(…)でタプル(tuple)を記述する。リストは要素の変更が可能だが、タプルは変更できない。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = [1, 2, 3] tpl = (4, 5, 6) print(lst) # [1, 2, 3] print(tpl) # (4, 5, 6)  | 
					
				
			 
		 
要素を改行して記述可能で、最後の要素のカンマ(,)は付けても付けなくてもよい。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = [     'one', 'two',     'three', 'four', ]   print( a ) # ['one', 'two', 'three', 'four']  | 
					
				
			 
		 
型の異なる要素を混在させてよい。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = [1, 'two', 3] tpl = ('one', 2, 'three')  | 
					
				
			 
		 
要素が一つだけのタプルは、要素の後にカンマ(‘)を付ける必要がある。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						print((1))  # 1 => 数値 print((1,)) # (1,) => タプル  | 
					
				
			 
		 
入れ子
リスト、タプルは入れ子にできる。リストの要素にタプルがあってもよく、その逆も可能。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lt = [1, (2, 3), 4] tl = (1, [2, 3], 4)  | 
					
				
			 
		 
リストとタプルの違い
リストの要素は変更できるが、タプルの要素は変更できない。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = [1, 2, 3, 4] tpl = (1, 2, 3, 4)   lst[0] = 5 # 変更可能 tpl[0] = 5 # TypeError  | 
					
				
			 
		 
ただしタプルの要素がオブジェクトの場合、オブジェクトへの参照が変わらなければ、オブジェクトの内容は変更可能。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = (1, 2, [3, 4], 5)   a[2][1] = 0 print(a) # (1, 2, [3, 0], 5)   a[2].append(-1) print(a) # (1, 2, [3, 0, -1], 5)   a[2] = [0, 1] # TypeError  | 
					
				
			 
		 
相互変換
list()関数でタプルをリストに、tuple()関数でリストをタプルに変換可能。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						print(list((1, 2, 3)))  # [1, 2, 3] print(tuple([1, 2, 3])) # (1, 2, 3)  | 
					
				
			 
		 
リスト
リストの初期化
共通操作
要素の個数
要素数はlen()関数で得られる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						print(len([1, 2, 3, 4])) # 4  | 
					
				
			 
		 
要素へのアクセス
インデックスを指定してアクセスできる。最初の要素のインデックスは0となる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = [1, 2, 3] print(a[0]) print(a[1]) print(a[2])   # 実行結果 # 1 # 2 # 3  | 
					
				
			 
		 
インデックスに負の数を指定すると、-1を最後尾としてそこから前方へカウントする。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						t = (1, 2, 3) print(t[-1]) print(t[-2]) print(t[-3])   # 実行結果 # 3 # 2 # 1  | 
					
				
			 
		 
forによる順次アクセス
forで個々の要素にアクセスできる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = [1, 2, 3] for n in a:   print(n)   # 実行結果 # 1 # 2 # 3  | 
					
				
			 
		 
結合
リスト同士、タプル同士を結合して、新たなリスト/タプルを生成できる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						print([1, 2, 3] + [4, 5, 6]) # [1, 2, 3, 4, 5, 6] print((1, 2, 3) + (4, 5, 6)) # (1, 2, 3, 4, 5, 6)  | 
					
				
			 
		 
部分列
- [n:m]でn番目からm-1番目の要素を取り出した部分列を返す
 
- [:m]は先頭からm-1番目まで、[n:]はn番目から最後までの部分列を返す
 
- [n:m:s]でn番目~m-1番目の要素をs個おきで返す
 
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(a[2:5])   # [3, 4, 5] print(a[:3])    # [1, 2, 3] print(a[5:])    # [6, 7, 8, 9] print(a[1:8:2]) # [2, 4, 6, 8]  | 
					
				
			 
		 
n、mにマイナスの値を指定すると、後ろから数える。-1が最後の要素を差し、そこから前へ遡っていく。ただしmに-1を指定すると、その一つ手前の-2番目の要素までが対象となる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						a = [1, 2, 3, 4, 5] print(a[-1])    # 5 print(a[-3:-1]) # [3, 4]  | 
					
				
			 
		 
要素の検索
- in演算子
 
- 要素がリストに含まれているかどうかを判定。
 
- index()メソッド
 
- 指定した要素のインデックスを返す。2番目の引数で検索を開始するインデックスを指定可能。要素が存在しない場合はValueError。
 
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = ['A', 'B', 'C', 'B', 'A'] print('C' in lst) # True print('D' in lst) # False print(lst.index('B'))    # 1 print(lst.index('A', 1)) # 4 # print(lst.index('D'))  # ValueError print(lst.count('A'))    # 2  | 
					
				
			 
		 
リストのみの操作
以下の操作は要素の変更を伴うので、リストのみ可能。
要素の変更
単独要素の置き換えのほか、部分リストを指定した一括置換が可能。置き換えられるリストと置き換えるリストの長さが違う場合、自動的にリストの長さが変更される。
		
		
			
			
			
			
				
					
				
					1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  
				 | 
						lst = ['A', 'B', 'C', 'D'] lst[2] = 'c' print(lst) # 添字2の要素を置き換え # ['A', 'B', 'c', 'D']   lst[:2] = ['a', 'b'] print(lst) # 部分リストの要素で置き換え # ['a', 'b', 'C', 'D']   lst = ['A', 'B', 'C'] lst[1:] = ['b', 'c', 'd'] print(lst) # リストの自動的な拡張 # ['A', 'b', 'c', 'd']   lst = ['A', 'B', 'C', 'D'] lst[:2] = 'b' print(lst) # リストの自動的な縮小 # ['b', 'C', 'D']  | 
					
				
			 
		 
要素の追加・削除
要素の追加
- append()メソッド
 
- 引数をリストの要素として追加する。
 
- insert()メソッド
 
- インデックスで指定した要素の前に新たな要素を追加する。
 
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = [1, 2, 3] lst.append(4) print(lst) # [1, 2, 3, 4]   lst = [1, 2, 3] lst.append([4, 5, 6]) print(lst) # [1, 2, 3, [4, 5, 6]]   lst = [1, 2, 3] lst.insert(1, 1.5) print(lst) # [1, 1.5, 2, 3]   lst = [1, 2, 3] lst.insert(1, [1.5, 1.6]) print(lst) # [1, [1.5, 1.6], 2, 3]  | 
					
				
			 
		 
要素の削除
詳細はこちら
- del文
 
- 添字を指定してリストの要素を削除する。部分リストを指定して削除することも可能。
 
- remove()メソッド
 
- 要素そのものを指定して削除する。同じ値の要素が複数存在する場合、最初の要素を削除する。
 
- pop()メソッド
 
- 指定した位置の要素を取り出して削除する。先頭要素はゼロ番目、位置指定を省略した場合は最後尾。
 
		
		
			
			
			
			
				
					
				
					1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  
				 | 
						lst = [1, 2, 3, 4, 5] del lst[2] # [1, 2, 4, 5] print(lst) del lst[1:3] print(lst) # [1, 5]   lst = ['A', 'B', 'C', 'B', 'A'] lst.remove('B') print(lst) # ['A', 'C', 'B', 'A']   lst = [1, 2, 3, 4] elm = lst.pop() print(elm, lst) # [1, 2, 3]   lst = [1, 2, 3, 4] elm = lst.pop(2) print(elm, lst) # [1, 2, 4]  | 
					
				
			 
		 
リストの拡張
extend()メソッドにより、リストに他のリストの要素を展開して追加できる。
		
		
			
			
			
			
				
					
				| 
					
				 | 
						lst = [1, 2, 3] lst.extend([4, 5, 6]) print(lst) # [1, 2, 3, 4, 5, 6]   lst = [1, 2, 3] lst.extend([[4, 5], [6, 7]]) print(lst) # [1, 2, 3, [4, 5], [6, 7]]  | 
					
				
			 
		 
内包表記
内包表記を参照。