[Python] Rangeの積を求める
ueBLOGさんのブログ経由で知ったこの Range の積を求めるというもの。
» [Ruby] Rangeの積を求める - masuidrive
» Life is beautiful: 教えながら学ぶRuby:「Rangeの積を求める」をやってみた
を Python で書いてみました。引数に3個以上とかのRangeを渡されても大丈夫です。
元ネタの Ruby は Range クラスを拡張していますが、 Python の Range はビルトイン関数なので関数定義で。
from sets import Set
def range2(*args):
return reduce(Set.intersection, map(Set, args))
では、実行してみましょう。
>>> range2([1,2,3,4,5,6], [3,4,5,6,7,8,9], [4,5,6,7,8,9,10,11]) [4, 5, 6] >>> range2([1,2,3,4,5,6], [3,4,5,6,7,8,9], [10,11]) [] >>> range2(range(1,8), range(3,7), range(4, 200)) [4, 5, 6]
で、何が言いたいかというと、「Reduce なくさないでよ!」ということです。functools.reduce という感じで残るみたいですが、組み込み関数じゃなくなるのは悲しいなぁ。
便利べんり。 Reduce 最高。









