#【python】内包表記。for文をシンプルに記述する。(コレクションとは、イテラブルとイテレータの違い)
for文を使って、listやset型など(コレクション)を作れる。
##内包表記とは
for文を簡単に書ける書き方。
・[式 for 変数 in イテラブル]
└ []で囲むと出力の型はlistになる。
└ {}だとセット型
[(i*2) for i in range(5)]
#出力
[0, 2, 4, 6, 8]
出力はlist形式。
以下と同じ。
arrs=[]
for i in range(5):
arr = (i*2)
arrs.append(arr)
arrs
#出力
[0, 2, 4, 6, 8]
▼{}にするとセット型
{(i*2) for i in range(5)}
#出力
{0, 2, 4, 6, 8}
##補足 ###■コレクションとは データ型の一種。 複数の要素を持てる型の総称。
list, range, setなど。
1つのデータしか持てない、str, int, floatなどはコレクションではない。
###■イテラブルとイテレータの違い
イテラブルは繰り返し可能なオブジェクトの総称。
イテレータはイテラブルの1種(型)でより限定的。
・イテラブル(iterable)
繰り返し可能なオブジェクト。
list, tapple, range型のオブジェクト。
「for i in イテラブル」
**・イテレータ** 型の一種。(元の型_iterator) iter関数で、イテレーターになる。 next関数が使える。
▼イテレータ型の確認
listの場合
arr = [1,2,3,4,5]
iterArr = iter(arr)
type(iterArr)
#list_iterator
tuppleの場合
brr = (1,2,3,4,5)
iterArr = iter(arr)
type(iterArr)
#tuple_iterator
rangeの場合
crr = range(5)
iterArr = iter(arr)
type(iterArr)
#range_iterator
・next関数
iter型の要素を一つづつ順番に取り出す。
不可逆。
next(イテレータ)
イテレータ&next
arr = [1,2,3,4,5]
iterArr = iter(arr)
next(iterArr)
1
next(iterArr)
2
~
~
~
next(iterArr)
5
next(iterArr)
StopIteration: #←全部抽出しきるとエラーになる
イテレータとnextを使うと順に処理をしていける。
▼イテレータはfor文も使える。
イテレータはイテラブルな要素の一つ。
arr = [1,2,3]
iterArr = iter(arr)
for i in iterArr:
print(i)
1
2
3