牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

リストで数が連続して〜のコードをほぼ1行でやってみた[完結編]

「本当に1行で」追加


2008-10-02 - プログラミング日記』さんが素晴らしいコードを書かれて嬉しくなったから1行にしてみた。

ほぼ1行

>|python|
from operator import itemgetter
from itertools import groupby

lst = [1,3,4,5,6,12,13,15]

print map(lambda x:[x[0], x[-1]] if len(x) > 1 else x[0], [map(itemgetter(1), g) for k, g in groupby(enumerate(lst), lambda (i,x):i-x)])
|

結果

[1, [3, 6], [12, 13], 15]

from〜のとこ目をつぶれば、ほぼ1行(・∀・)

本当に1行で

morchin さんにいただいたコメントにより(ありがとうございす)

lst = [1,3,4,5,6,12,13,15]
print map(lambda x:[x[0], x[-1]] if len(x) > 1 else x[0], [map(__import__('operator').itemgetter(1), g) for k, g in __import__('itertools').groupby(enumerate(lst), lambda (i,x):i-x)])

1行でできました━━━━(゚∀゚)━━━━ッ!!