Flat Leon Works

アプリやゲームを作ってます。

【Python】リストからタプルのリストを作成する

Pythonでリストからタプルのリストを作りたい場合、例えば[1,2,3,4,5,6]というリストがあって、これを[(1,2),(3.4),(5,6)]のようなタプルのリストにしたい場合は以下のように書くのが楽です。

listA = [1,2,3,4,5,6]
listB = zip( listA[::2], listA[1::2] )
print listB # [(1, 2), (3, 4), (5, 6)]

2個ずつのタプルではなく、3個ずつのタプルにしたい場合は以下のようにします。

listA = [1,2,3,4,5,6]
listB = zip( listA[::3], listA[1::3], listA[2::3] )
print listB # [(1, 2, 3), (4, 5, 6)]

スライスのコストが気になる場合は、itertools.isliceを使うのが良いかもしれません。

import itertools
listA = [1,2,3,4,5,6]
listB = zip( itertools.islice( listA, 0, None, 2 ), itertools.islice( listA, 1, None, 2 ) )
print listB # [(1, 2), (3, 4), (5, 6)]

リンク

Python2.7ドキュメント