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

Patricia Arquette
リリース: 2024-11-19 04:20:02
オリジナル
583 人が閲覧しました

How to Achieve Python List Comprehension Functionality in Go?

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

Python のリスト内包表記は、シーケンスをフィルタリングおよび変換するための簡潔な方法を提供します。 Go では、フィルター関数を使用して同様の機能を実現できます。ただし、for ループは、より効率的で簡単なアプローチを提供する場合があります。

Python のリスト内包表記を再現するには:

array = [a for a in anotherArray  if (some condition)]
ログイン後にコピー

Go では、次のフィルター関数を使用できます:

import (
    "fmt"
    "math"
    "math/big"
)

func main() {
    anotherArray := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    newArray := filter(anotherArray, func(a int) bool {
        return a%2 == 0
    })
    fmt.Println(newArray) // [2 4 6 8]
}
ログイン後にコピー

フィルター関数は 2 つの引数を取ります。フィルターするシーケンスと、どの要素を含めるかを決定する述語関数です。述語を満たす要素のみを含むスライスが返されます。

より複雑な式の場合は、Python の例と同様にラムダ関数を使用できます。

min := func() *big.Int {
    a := big.NewInt(0)
    return a
}()
for i := 0; i < n; i++ {
    for j := i; j < n; j++ {
        potentialMin := big.NewInt(0)
        potentialMin.Abs(a[i].Sub(a[i], b[j]))
        if potentialMin.Cmp(min) == -1 {
            min = potentialMin
        }
    }
}
ログイン後にコピー

ただし、GoDocフィルター ライブラリは、for ループの方が効率的であり、パッケージよりも望ましいとアドバイスします。したがって、単純さと読みやすさを考慮して、for ループを使用することをお勧めします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート