2chの『Pythonのお勉強』スレッドが荒らされぎみだったのでここで。
3 :デフォルトの名無しさん:2008/08/04(月) 17:00:55
シーケンスをn個ずつに分割したいんだが
何かいい方法ないかい?例えば 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' を3個ずつに分解して、
['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STU', 'VWX', 'YZ'] のような状態にしたい。:
4 :デフォルトの名無しさん:2008/08/04(月) 17:24:59
str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print [str[i:i+3] for i in range(0,len(str),3)]こんなんかなあ。もっと綺麗に書ける方法あるかもしれないけど。
:
7 :デフォルトの名無しさん:2008/08/04(月) 21:50:41
re.findall(".{1,3}", s):
12 :3:2008/08/05(火) 01:42:28
>>4
やっぱり、それしかないのかな>>7
Pythonのお勉強 Part28
それだと文字列には通用するのだが
リストやタプルのようなシーケンスには使えないのよ
#シーケンスをn個ずつに分割したい def three_str(s, n): if not s: return [] return [s[:n]] + three_str(s[n:], n) #test str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' print three_str(str, 3) print three_str(str, 5) li = [1,2,3,4,5,6,7,8,9,10] print three_str(li, 3) print three_str(li, 5)
結果
['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR', 'STU', 'VWX', 'YZ'] ['ABCDE', 'FGHIJ', 'KLMNO', 'PQRST', 'UVWXY', 'Z'] [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
こんなんできました。