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] }
过滤器函数有两个参数:要过滤的序列和确定要包含哪些元素的谓词函数。它返回一个仅包含满足谓词的元素的切片。
对于更复杂的表达式,您可以使用 lambda 函数,类似于 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中文网其他相关文章!