python,list如何去重

python,list如何去重,第1张

通过set来去重

>>> l = [1,2,3,4,5,2,1,3,45,3,21,12,4]
>>> set(l)
set([1, 2, 3, 4, 5, 12, 45, 21])
>>> print list(set(l))
[1, 2, 3, 4, 5, 12, 45, 21]
>>>

Java8开始,对数值,集合等提供了Stream流 *** 作,可以方便的对集合进行 *** 作

比如 筛选,过滤,去重, 映射, 排序,规约,收集 等 *** 作

简单的参考代码如下


import javautilArrays;
import javautilList;
import javautilstreamCollectors;
// 使用Java8 的Stream特性 和 Java8的Lambda 语句
public class Demo {
public static void main(String[] args) {
// 需求: 集合去重,排序,得到一个新集合里面的元素是之前元素的平方
List<Integer> list=ArraysasList(5,2,2,1,3,4);
List<Integer> listResult = list
stream() // 得到流
distinct() // 去重 5,2,1,3,4
sorted() // 自然排序 , 也可以自定义排序规则1,2,3,4,5
map(x->xx) // 每个元素求平方1,4,9,16,25
collect(CollectorstoList()); //收集并返回

Systemoutprintln(listResult);//1,4,9,16,25
}
}

最笨的方法

var list = [1, 2, 3, 6, 7, 8, 9, 1, 2, 3, 6];//有重复的数组
var obj = {};//用于标记字符串
var arr = [];//去掉重复后的数组
for (var i = 0, len = listlength; i < len; i++) {
    var s = list[i];
    if (obj[s]) continue;//如果字符串已经存在就跳过
    else {
        obj[s] = s;//加入标记对象中
        arrpush(s);//结果放入新数组中
    }
}

当jquery中有封装好的去重复方法,还有其他第三方js插件也存在去重复的方法。

List<String> list = new ArrayList<>();
/listadd("abc");
listadd("abc");
listadd("def");
listadd("bcd");/
Set<String> set = new LinkedHashSet<>();//这种方式保证去重后的元素相对位置不变
//Set<String> set = new HashSet<>();//这种方式去重后元素的位置很有可能变化了
setaddAll(list);
listclear();
listaddAll(set);
for(String s : list){
Systemoutprintln(s);
}

整个思路就是利用set中的元素是不重复的,来达到去重的目的

使用set集合啊,set集合是不能放重复的数据的。
Set hashSet = new HashSet(list);
然后在转过来就行了,set去除重复是调用了equals方法,所以你在Sh里面要重写equals方法,自定义比较的规则,例如:
public boolean equals(Object obj) {
if(obj==null) return false;
if(obj==this) return true;
Sh sh = (Sh)obj;
if(shgetHm()==thisgetHm()){
return true;
}
return false;
}

1使用set的特型,python的set和其他语言类似,是一个无序不重复元素集
orgList=[1,0,3,7,7,5]
#list()方法是把字符串str或元组转成数组
formatList=list(set(orgList))
print(formatList)
结果:
[0,1,3,5,7]                                                                                     
2使用keys()方法
orgList=[1,0,3,7,7,5]
#list()方法是把字符串str或元组转成数组
formatList=list({}fromkeys(orgList)keys())
print(formatList)
结果:
[0,1,3,5,7] 
上面两种方法的问题是:结果是没有保持原来的顺序。
3循环遍历法
orgList=[1,0,3,7,7,5]
formatList=[]
foridinorgList:
ifidnotinformatList:
formatListappend(id)
print(formatList)
结果:
[1,0,3,7,5]
这样的代码不够简洁
4按照索引再次排序
orgList=[1,0,3,7,7,5]
formatList=list(set(orgList))
formatListsort(key=orgListindex)
print(formatList)
结果:
[1,0,3,7,5]

以下代码有点琐碎,不过很明了
List<WordInfo> list = new List<WordInfo>();
WordInfo temp;
for (int i = 0; i < 10; i++)
{
    temp = new WordInfo();
    tempword = "word";
    tempflag = i;
    listAdd(temp);
}
for (int i = 0; i < 10; i++)
{
    temp = new WordInfo();
    tempword = "word1";
    tempflag = i;
    listAdd(temp);
}
var aa = from ll in list where llword == "word" select ll;// Linq 查找出所有 WordInfo 的word的值为 “word" 的元素
if(aaCount()>0)// 判断是否有 word 为 “word" 的元素
{
    var temp1 = aaToList()[0];// 保留一个 word的值为 “word" 的元素
    while (aaCount()>0)
    {
        listRemove( aaToList()[0]);//移走所有 word的值为 “word" 的元素
    }
    listAdd(temp1);// 再添加一个 word的值为 “word" 的元素
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/13350219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存