リストのグルーピング
30分プログラム、その204。最近、周辺でPythonが流行ってるので、しばらく使ってみる。
まずは、手始めにリスト操作関数をば。prototype.jsのinGroupOfを実装してみる。
使い方
>>> groupOf(range(10),3) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] >>> groupOf(range(10),3,"_") [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, '_', '_']]
ソースコード
Pythonで「何もない」を表わすのがNoneであることを忘れてて、時間がかかった。
#! /usr/bin/python # -*- mode:python; coding:utf-8 -*- # # group.py - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2007/12/16 22:43:34 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # def groupOf(xs,n,fill=None): l = len(xs) if l < n and fill != None: span = [fill]*(n-l) return [ xs + span ] elif l <= n: return [xs] else: return [ xs[0:n] ] + groupOf(xs[n:],n,fill)