ホームページ >バックエンド開発 >Golang >Go で Python のリスト内包機能を実現するにはどうすればよいですか?

Go で Python のリスト内包機能を実現するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 20:10:021023ブラウズ

How to Achieve Python's List Comprehension Functionality in Go?

Go で同等の Python のリスト内包表記

この投稿では、Python のリスト内包表記を Go で再現する方法、具体的には次の構文を検討します。

array = [a for a in anotherArray if (some condition)]

フィルター ライブラリの利用

Go オファーRob Pike によって提案されたフィルター ライブラリ。このライブラリは、スライスとブール関数を引数として受け取る Choose() 関数を提供します。指定された条件を満たす要素のみを含む新しいスライスを返します。

例:

import "google.golang.org/x/exp/slices"

func TestChoose(t *testing.T) {
    a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    expect := []int{2, 4, 6, 8}
    result := slices.Choose(a, isEven)
}

フィルター ライブラリの注意事項

フィルター ライブラリは便利な機能を提供しますが、この解決策の公式ドキュメントでは、明示的な for ループに比べて効率が低下するため、その使用を避けるようアドバイスしています。

For ループは、代替

Go ドキュメントでは、リスト内包表記の代替として for ループを使用することを推奨しています。これらは、特に操作の順序を制御したり、データ生成を制限したりする必要がある状況で、より効率的なソリューションを提供します。

たとえば、次のコードは、ネストされたループの最小値を計算します。

min := min(abs(a[i], b[j]) for i in range(n)
                          for j in range(i, n))

以上がGo で Python のリスト内包機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。