我try 将以下Python代码转换为Go
import random
list = [i for i in range(1, 25)]
random.shuffle(list)
print(list)
但我发现我的Go版本冗长而笨拙,因为它没有Shuffle函数,而且我必须实现接口和转换类型.
我的代码的惯用Go版本是什么?
我try 将以下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
给出的排列是混洗任何数组的有效方法.
dest := make([]int, len(src))
perm := rand.Perm(len(src))
for i, v := range perm {
dest[v] = src[i]
}