タグ付けされた質問 「chunking」

9
Rubyで文字列を特定の長さのチャンクに切り刻む最良の方法は何ですか?
私は、Rubyで文字列を特定の長さの部分文字列にチャンクするエレガントで効率的な方法を探していました。 これまでのところ、私が思いつくことができる最高のものはこれです: def chunk(string, size) (0..(string.length-1)/size).map{|i|string[i*size,size]} end >> chunk("abcdef",3) => ["abc", "def"] >> chunk("abcde",3) => ["abc", "de"] >> chunk("abc",3) => ["abc"] >> chunk("ab",3) => ["ab"] >> chunk("",3) => [] の代わりchunk("", n)に戻ることをお勧めします。その場合は、これをメソッドの最初の行として追加します。[""][] return [""] if string.empty? より良い解決策をお勧めしますか? 編集 このエレガントで効率的なソリューションを提供してくれたJeremyRutenに感謝します:[編集:効率的ではありません!] def chunk(string, size) string.scan(/.{1,#{size}}/) end 編集 string.scanソリューションは、わずか2.4秒しかかからない元のスライスベースのソリューションと比較して、512kを1kチャンクに10000回チョップするのに約60秒かかります。
88 ruby  string  chunking 

17
反復可能オブジェクトを一定サイズのチャンクに分割する方法
重複の可能性: Pythonでリストを均等なサイズのチャンクに分割するにはどうすればよいですか? iterableを入力として受け取り、iterableのiterableを返す「バッチ」関数が見つからなかったことに驚いています。 例えば: for i in batch(range(0,10), 1): print i [0] [1] ... [9] または: for i in batch(range(0,10), 3): print i [0,1,2] [3,4,5] [6,7,8] [9] さて、私は非常に単純なジェネレーターだと思ったものを書きました。 def batch(iterable, n = 1): current_batch = [] for item in iterable: current_batch.append(item) if len(current_batch) == n: yield current_batch current_batch = [] …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.