分享
Golang、python去除slice和list的重复元素,非常有用的功能
大洋的顶端 · · 2125 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
Golang中,利用反射和interface就可以做到,不废话看代码
func main() {
b := []string{"a", "b", "c", "c", "e", "f", "a", "g", "b", "b", "c"}
sort.Strings(b)
fmt.Println(Duplicate(b))
c := []int{1, 1, 2, 4, 6, 7, 8, 4, 3, 2, 5, 6, 6, 8}
sort.Ints(c)
fmt.Println(Duplicate(c))
}
func Duplicate(a interface{}) (ret []interface{}) {
va := reflect.ValueOf(a)
for i := 0; i < va.Len(); i++ {
if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) {
continue
}
ret = append(ret, va.Index(i).Interface())
}
return ret
}
输出:
[a b c e f g]
[1 2 3 4 5 6 7 8]
而python自带的系统函数就能做到
a=["a", "b", "c", "c", "e", "f", "a", "g", "b", "b", "c"] print(list(set(a))) a=[1, 1, 2, 4, 6, 7, 8, 4, 3, 2, 5, 6, 6, 8] print(list(set(a)))
输出:
['e', 'g', 'b', 'c', 'a', 'f']
[1, 2, 3, 4, 5, 6, 7, 8]
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2125 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
Golang中,利用反射和interface就可以做到,不废话看代码
func main() {
b := []string{"a", "b", "c", "c", "e", "f", "a", "g", "b", "b", "c"}
sort.Strings(b)
fmt.Println(Duplicate(b))
c := []int{1, 1, 2, 4, 6, 7, 8, 4, 3, 2, 5, 6, 6, 8}
sort.Ints(c)
fmt.Println(Duplicate(c))
}
func Duplicate(a interface{}) (ret []interface{}) {
va := reflect.ValueOf(a)
for i := 0; i < va.Len(); i++ {
if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) {
continue
}
ret = append(ret, va.Index(i).Interface())
}
return ret
}
输出:
[a b c e f g]
[1 2 3 4 5 6 7 8]
而python自带的系统函数就能做到
a=["a", "b", "c", "c", "e", "f", "a", "g", "b", "b", "c"] print(list(set(a))) a=[1, 1, 2, 4, 6, 7, 8, 4, 3, 2, 5, 6, 6, 8] print(list(set(a)))
输出:
['e', 'g', 'b', 'c', 'a', 'f']
[1, 2, 3, 4, 5, 6, 7, 8]