リストのグルーピング

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)