Go 等效于 Python 的列表推导式
Python 的列表推导式提供了一种通过过滤和转换元素来生成列表的简洁方法。但是,如果您正在过渡到 Go 并发现复制此功能具有挑战性,这里有一个解决方案:
使用过滤器包的优雅解决方案
幸运的是,Go 社区提供了过滤器包,它提供了类似于Python列表理解的功能。具体来说,它的 Choose 函数采用一个切片和一个过滤函数,返回一个仅包含通过过滤器的元素的新切片。
import "github.com/rogpeppe/go-internal/filter" func Choose(slice []T, fn func(T) bool) []T
示例:
// Get even numbers from a list a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} expect := []int{2, 4, 6, 8} result := filter.Choose(a, isEven)
替代方法:For 循环
虽然过滤器包提供了便利,但需要注意的是,使用传统的 for 循环仍然是一个可行且有效的选择。 Go 的 for 循环提供了灵活性和优化机会。
for i := range a { if someCondition { result = append(result, a[i]) } }
结论
尽管 Go 中缺乏原生列表理解语法,但过滤器包和 for 循环为过滤和转换列表提供了强大的解决方案。虽然过滤器包提供了简洁的语法,但 for 循环仍然是一种高性能且高效的替代方案。最终,方法的选择将取决于您应用程序的具体要求。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3