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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 04:20:02576ブラウズ

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 サイトの他の関連記事を参照してください。

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