我尝试将以下 Python 代码翻译为 Go
import random list = [i for i in range(1, 25)] random.shuffle(list) print(list)
但是发现我的 Go 版本冗长而笨拙,因为没有 shuffle 功能,我不得不实现接口和转换类型。
我的代码的惯用 Go 版本是什么?
由于您的列表只是 1 到 25 之间的整数,您可以使用Perm:
list := rand.Perm(25) for i, _ := range list { list[i]++ }
请注意,使用由 给出的排列rand.Perm是对任何数组进行混洗的有效方法。
rand.Perm
dest := make([]int, len(src)) perm := rand.Perm(len(src)) for i, v := range perm { dest[v] = src[i] }