タグ

qiitaとiteratorに関するnabinnoのブックマーク (8)

  • Pythonのイテレータとジェネレータ - Qiita

    Pythonのイテレータ(iterator)とジェネレータ(generator)についてまとめてみます。 (追記2018.12.25: Python3の文法に全面的に置き換えました) イテレータ: 要素を反復して取り出すことのできるインタフェース ジェネレータ: イテレータの一種であり、1要素を取り出そうとする度に処理を行い、要素をジェネレートするタイプのもの。Pythonではyield文を使った実装を指すことが多いと思われる Python組み込みのコレクション(list, tuple, set, dictなど)はどれもイテレーション可能ですが、組み込みのコレクションを使った繰り返し処理ではあらかじめコレクションに値を入れておく必要があるため、以下のようなケースではイテレータやジェネレータを自分で実装したいというケースがあると思います。 無限に繰り返すイテレーション 要素すべてをあらかじめ

    Pythonのイテレータとジェネレータ - Qiita
  • 高速コレクション操作ライブラリ「Koazee」 - Qiita

    この記事はGo2 Advent Calendar 2018の17日目の記事です。 コレクション操作ライブラリ Koazee 12月はじめのこと、go-nutsに「速いコレクション操作ライブラリを作ったぜ」という投稿がありました。 [go-nuts] Koazee vs Go-Linq vs Go-Funk 彼のベンチマークによると類似のライブラリに比べてかなり速いという結果が示されています。ここでは彼が作ったコレクション操作ライブラリ Koazee を紹介しつつ、高速化の一端に触れてみます。 github.com/wesovilabs/koazee Lazy like a koala, smart like a chimpanzee (原文ママ) Koazeeの特徴は イミュータブル ストリームスタイル 遅延ローディング ジェネリックス 速い! とのことでここでは「ジェネリックス」と「速い

    高速コレクション操作ライブラリ「Koazee」 - Qiita
  • GolangのSliceでFilterやMap的なことをやりたい - Qiita

    前までGo言語でFilter的なことをやりたい時はgo-funkを使っていたが、genを使うようになってからコードが読みやすくなったように感じるのでオススメしたい。 方法1: go-funkを使う go-funkというライブラリを使うと、自前のstructのsliceに対してもFilterやMapなどの処理をかける。 result := funk.Filter(books, func(book *Book) bool { return book.Author == "John Smith" }) Filter以外にもFindやMap、Uniqなど非常に便利な関数が用意されている。手軽さを重視するなら、go-funkを使うのも悪くないとは思う。 ただし、go-funkはリフレクションの仕組みを使って実装されているため、返り値がinterface{}型のsliceになっているため毎回キャストが

    GolangのSliceでFilterやMap的なことをやりたい - Qiita
  • Rustのイテレータの網羅的かつ大雑把な紹介 - Qiita

    はじめに 正直なところ、公式ドキュメント std::iter::Iterator - Rust を読めば終了、この記事は不要、という感じはある。 しかしこのページ、例とかは豊富だし良いのだが、関数の並べ順がどうにも微妙な感じがするので、メモを兼ねて用途別(独断と偏見による分類)で紹介してみることにする。 あと、関数の型はHaskell風に書くと流れる感じがあって良い(イテレータの用途とマッチしている気がする)ので、 T -> U -> V のように書くことがある。 とはいえ、わかりやすさ優先で書くと FnMut とか FromA: Default + Extend<A> みたいな独特の情報が失われてしまったため、やはり公式のドキュメントをあわせて見ることをおすすめする。(リンクを沢山張ったので、発見次第別ウィンドウで開くくらいの勢いが良い。) それから、以下で Iterator<T> と書

    Rustのイテレータの網羅的かつ大雑把な紹介 - Qiita
  • JavaScriptでforEach, filter, map, reduceとか - Qiita

    連想配列(object)だと使えないので、eachはjQueryの$.each(collection, callback)の方が使い勝手がいいかも。 [2, 5, 9].forEach(function(element, index, array) { console.log(index + ":" + element); /** * 0:2 * 1:5 * 2:9 */ });

    JavaScriptでforEach, filter, map, reduceとか - Qiita
  • [JavaScript] オブジェクトをループでまわす - Qiita

    「そもそもオブジェクトをループで回したい場面なんてねぇよ!」 「潔く標準のメソッド使えよ!」といったツッコミを想定の上で書いております. ご承知の上でお読みください. フロー ふとオブジェクトをループで回したいってときに私がたどるフロー for in 使うか? いや keys で key 配列とってきて forEach で回したほうがカッコよくね? obj.keys().forEach(...) ... あれ? エラー?? keys って Object の static メソッドかよ!! Object.keys(obj).forEach(...) これを今回は↓ forIn(...) 使お♪ で済ませちゃおうって tips です. よくやっちゃうダサいパターン for in でまわす. hasOwnProperty() 忘れがち. var human = { name: "phi", ag

    [JavaScript] オブジェクトをループでまわす - Qiita
  • イテレータを返す関数を書きたいんですけど? → やめとけ。 死ぬぞ。 - Qiita

    !!この記事の内容はもう古いです。 詳しくはコメント参照!! こんにちは。 Rust記事です。 Rust、比較的新しい言語じゃないですか。 頑張ってチュートリアル読んで、じゃあなんかちょっとしたアルゴリズムでも書いてみるか、ってなるじゃないですか。 で、大体のちょっとしたアルゴリズムって、まぁ普通は配列とかマップとか、そういうデータ集合のデータ構造が出てきますよね。 もちろんそんなデータ構造を関数間で受け渡ししたくなるじゃないですか。 で、『Vec作って返すよりもイテレータの状態で返したほうがパフォーマンスいいんじゃない?』って場面はまぁあると思うんですよ。 やめとけ、死ぬぞ。 っていうのが今回の主旨です。 イテレータを返す関数って、どんな定義になると思いますか? ここでは適当に、Vec<i32>を2つ受け取って、それらを連結した上で3の倍数の要素のみを返したい、とか考えましょう。 たぶん

    イテレータを返す関数を書きたいんですけど? → やめとけ。 死ぬぞ。 - Qiita
  • Rubyで学ぶデザインパターン - Iterator - Qiita

    Wantedlyエンジニア新人研修(設計)の1回目 チェックポイント ArrayはIteratorを使っているか? HashはIteratorを使っているか? 自分でIteratable(Enumerable)なクラスは書けるか? Rubyでインターフェースは存在しないがどう置き換えられているか? 1. どういう時に使うか 集合の要素を全走査したいとき。 Rubyで言えば XXX.each でループを回せる部分。 2. メリット (+デメリット) メリット 個々の要素とその集合という概念を扱えるようになる。 デメリット 特になし。 3. このパターンを使わないとどうなるか 配列やDB的なidがあるものに関してはfor (int i = 0; i < x.size(); i++)というような決まり文句で代替が効く。 文字列をKeyにした集合だと、そのkeyの配列などがない限り個々の要素にアク

    Rubyで学ぶデザインパターン - Iterator - Qiita
  • 1