- 概要
- リスト→新リスト 内包表記
- リスト→セット(集合) 内包表記
- リスト→辞書 内包表記
- 演算子
- 関数・メソッド
概要
- []で囲む
- 複数のデータを要素としてまとめて取り扱うデータ
- 構成要素:あらゆる型で混合してよい。
- 他言語の配列に近い。
- インデックスで要素を読書きできる。
‐ シーケンス型
money=1000 kaban=['財布','携帯',100] bag = [10,'りんご', kaban,money] print(bag) print(type(bag))#データ型確認 bag[1]='みかん' print(bag)
表示イメージ
[10, 'りんご', ['財布', '携帯', 100], 1000] <class 'list'> [10, 'みかん', ['財布', '携帯', 100], 1000]
インデックス
- 0から始まる。基本, 左側に格納したデータから数える。
- データの書換えが可能
- 負のインデックス:後ろから数える。「-1」から始まる。
word=['a', 'b', 'c', 'd','e'] print(word[1]) print(word[-2]) word[1]='Z' print(word) word[3]='ZZZZ' print(word) print(type(word))#データ型確認
表示イメージ
b d ['a', 'Z', 'c', 'd', 'e'] ['a', 'Z', 'c', 'ZZZZ', 'e'] <class 'list'>
スライス
部分文字列を取得可能
文字変数名[ 3 : 6 ]
文字変数名[ 3 : 6 : 2 ]
開始:省略時、0になる。終了+1:省略時、最大インデックスになる。
増分値:省略時、1
word=['a', 'b', 'c', 'd','e','f','g','h','i','j','k'] print(word[1:4]) print(word[1:8:2]) print(word[:4]) print(word[5:]) word[1:4]='Z' print(word) word[1:4]='ZZZZZ' print(word) print(type(word))#データ型確認
表示イメージ
['b', 'c', 'd'] ['b', 'd', 'f', 'h'] ['a', 'b', 'c', 'd'] ['f', 'g', 'h', 'i', 'j', 'k'] ['a', 'Z', 'e', 'f', 'g', 'h', 'i', 'j', 'k'] ['a', 'Z', 'Z', 'Z', 'Z', 'Z', 'g', 'h', 'i', 'j', 'k'] <class 'list'>
多重リスト
リスト内にリスト。
nums_strgs = [[1, 2, 3], [10, 20, 30], ['a', 'b', 'c']] print(nums_strgs) print(nums_strgs[1]) print(nums_strgs[1][2]) nums_strgs[1][2]='AAA' print(nums_strgs) nums_strgs[1]=[11,22] print(nums_strgs)
表示イメージ
[[1, 2, 3], [10, 20, 30], ['a', 'b', 'c']] [10, 20, 30] 30 [[1, 2, 3], [10, 20, 'AAA'], ['a', 'b', 'c']] [[1, 2, 3], [11, 22], ['a', 'b', 'c']]
リスト→新リスト 内包表記
シーケンスや iterableの要素に条件で絞ったり、要素を加工して新たなリストを生成。基本
[ 要素加工 for 要素 in iterable ]
[x**2 for x in range(10)]
表示イメージ
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
複数のリストから要素を取得
[ 要素A,B...加工 for 要素A in iterableA for 要素B in iterableB ...]
[(x, y) for x in [1,2,3] for y in [3,1,4]]
表示イメージ
[(1, 3), (1, 1), (1, 4), (2, 3), (2, 1), (2, 4), (3, 3), (3, 1), (3, 4)]
条件で絞る
[ True要素の加工 for 要素 in iterable if 要素条件]
nums = [1,2,None,3,4,5] [num for num in nums if num != None]
表示イメージ
[1, 2, 3, 4, 5]
入れ子(ネスト)・・・多次元リストを生成
[ [ 要素A,B...加工 for 要素A in iterableA ] for 要素B in iterableB ]
nums = [1,2,None,3,4,5] rows = ['a', 'b', 'c', 'd', 'e'] [[row+str(col) for row in rows] for col in range(4)]
表示イメージ
[['a0', 'b0', 'c0', 'd0', 'e0'], ['a1', 'b1', 'c1', 'd1', 'e1'], ['a2', 'b2', 'c2', 'd2', 'e2'], ['a3', 'b3', 'c3', 'd3', 'e3']]
リスト→セット(集合) 内包表記
シーケンスや iterableの要素に条件で絞ったり、要素を加工して新たなセット(集合)を生成。基本
{ 要素加工 for 要素 in iterable }
nums = [1,2,None,3,4,5] sets={num for num in nums if num != None} print(sets)
表示イメージ
{1, 2, 3, 4, 5}
リスト→辞書 内包表記
シーケンスや iterableの要素に条件で絞ったり、要素を加工して新たな辞書型を生成。基本
{ 要素加工 for 要素 in iterable }
animals = ['cat', None,'dog', 'bird', 'horse'] animals_dic={animal:len(animal) for animal in animals if animal != None} print(animals_dic)
演算子「+」
リストの連結
word=[1,2,3,4,5] print(word+['a', 'b', 'c', 'd','e'])
表示イメージ
[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']
演算子「*」
パターンA
word=[1,2,3,4,5] print(word*3)
表示イメージ
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
パターンA
words= [[0, 1], [2, 3]] lis = words*5 print(lis) words[0][0] = 'AA' #参照渡しなので「*5」分、全部変わる print(lis)
表示イメージ
[[0, 1], [2, 3], [0, 1], [2, 3], [0, 1], [2, 3], [0, 1], [2, 3], [0, 1], [2, 3]] [['AA', 1], [2, 3], ['AA', 1], [2, 3], ['AA', 1], [2, 3], ['AA', 1], [2, 3], ['AA', 1], [2, 3]]
演算子「in」
word=[1,2,3,4,5] print(1 in [1,2,3]) print(1 in word) print(5 in [1,2,3]) print(5 in word)
表示イメージ
True True False True
演算子「not in」
word=[1,2,3,4,5] print(1 not in [1,2,3]) print(1 not in word) print(5 not in [1,2,3]) print(5 not in word)
表示イメージ
False False True False
関数・メソッド
最大値 max関数
max(list)
word=[1,2,3,4,5] print(max(word))
表示イメージ
5
最小値 min関数
min(list)
word=[1,2,3,4,5] print(min(word))
表示イメージ
1
総和 sum関数
sum(list)
word=[1,2,3,4,5] print(sum(word))
表示イメージ
15
インデックス番号 indexメソッド
list.index(要素)
word=['a', 'b', 'c', 'd','e'] print(word.index('c'))
表示イメージ
2
並べ替え
ちょこっとメモ
破壊的
元のデータを変える。非破壊的
元のデータは、変えない。sort メソッド (破壊的)
sort(*, key=None, reverse=False)
reverse:Trueで降順word=['z', 'c', 'f', '2','d','1'] word.sort() print(word) word.sort(reverse = True) print(word)
表示イメージ
['1', '2', 'c', 'd', 'f', 'z'] ['z', 'f', 'd', 'c', '2', '1']
sorted 組込み関数 (非破壊的)
sorted(iterable, /, *, key=None, reverse=False)
reverse:Trueで降順word=['z', 'c', 'f', '2','d','1'] print(sorted(word)) print(word) print(sorted(word,reverse = True)) print(word)
表示イメージ
['1', '2', 'c', 'd', 'f', 'z'] ['z', 'c', 'f', '2', 'd', '1'] ['z', 'f', 'd', 'c', '2', '1'] ['z', 'c', 'f', '2', 'd', '1']
要素追加 append(x)メソッド
list.append(x)
x:追加する要素word=['a','b'] word.append(11) print(word)
表示イメージ
['a', 'b', 11]
要素挿入 insertメソッド
list.insert(i, x)
i:インデックス番号x:要素内容
s += t と同一
word=['a', 'b', 'c', 'd','e'] word.insert(3,'ZZ') print(word)
表示イメージ
['a', 'b', 'c', 'ZZ', 'd', 'e']
要素削除
要素内容で削除 removeメソッド
list.remove(x)
word=['a', 'b', 'c', 'd','e'] word.remove('c') print(word)
表示イメージ
['a', 'b', 'd', 'e']
インデックス番号で削除+取得 popメソッド
list.pop(i)
i:省略時、末尾を削除+取得※スタックとして使える。(last-in, first-out)
word=['a', 'b', 'c', 'd','e'] print(word.pop(2)) print(word) print(word.pop()) print(word)
表示イメージ
c ['a', 'b', 'd', 'e'] e ['a', 'b', 'd']
リストの先頭要素の削除+取得 collections.deque
キューとして使える。(first-in, first-out)
from collections import deque word=deque(['a', 'b', 'c', 'd','e']) print(word.popleft()) print(word)
表示イメージ
a deque(['b', 'c', 'd', 'e'])
インデックス番号で削除 del文
del list[x]
x:インデックス番号スライスも可能
word=['a', 'b', 'c', 'd','e'] del word[1] print(word) word=['a', 'b', 'c', 'd','e'] del word[1:3] print(word)
表示イメージ
['a', 'c', 'd', 'e'] ['a', 'd', 'e']
要素逆順 reverseメソッド
list.reverse()
word=['a', 'b', 'c', 'd','e'] word.reverse() print(word)
表示イメージ
['e', 'd', 'c', 'b', 'a']
要素copy メソッド
list.copy()
word=['a', 'b', 'c', 'd','e'] copy_word=word.copy() print(word) print(copy_word)
表示イメージ
['a', 'b', 'c', 'd', 'e'] ['a', 'b', 'c', 'd', 'e']