文档章节

Golang、python去除slice和list的重复元素,非常有用的功能

大洋的顶端
 大洋的顶端
发布于 2017/03/20 15:24
字数 194
阅读 141
收藏 1

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]

© 著作权归作者所有

大洋的顶端
粉丝 18
博文 30
码字总数 13805
作品 0
广州
私信 提问
Golang、python中的字符串、slice、list性能研究。

1:在go语言中,先来看创建slice的性能分析,我们知道slice有append这个功能 可以看到添加了1000000项,花费时间368.0211ms。 我们也可以自己先定义一个具有固定长度的silice: 花费时间 52...

大洋的顶端
2017/03/29
164
0
python3.x与python2.x的区别汇总

python3.x与python2.7.x都是比较流行的版本,虽然建议现在的初学者开始学习python3.x的版本,但是还有很多的工程使用的是python2.7.x版本。观看代码的时候难免会出现一些问题。 在google上搜...

oldpan
2017/10/10
0
0
人生苦短:Python里的17个“超赞操作

人生苦短,我选Python”。那么,你真的掌握了Python吗? 1. 交换变量 有时候,当我们要交换两个变量的值时,一种常规的方法是创建一个临时变量,然后用它来进行交换。比如: # 输入 a = 5 b ...

糖宝lsh
2018/08/17
76
0
golang 中神奇的 slice

声明:本文仅限于简书发布,其他第三方网站均为盗版,原文地址: golang 中神奇的 slice 在 golang 中,似乎人们都不太喜欢使用 Linked List,甚至于原生的 Array 都没怎么看到大家使用,反之...

yetship
2017/11/06
0
0
Python教程:17个冷门但实用的小技巧

编者按:Python是机器学习的主流语言,没有之一。今年5月,它首次在PYPL排行榜上超越JAVA,成为全球第一大编程语言。而一个月后,Stack Overflow也分享了最新的编程语言浏览量统计数字,结果...

Python程序猿
2018/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
46分钟前
4
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部