list中去重的问题

三种去重的方法

1、List中的元素实现IEquatabe接口,并提供Equals方法和GetHashCode方法。

2、使用表达式

[csharp]  view plain  copy
  1. users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i)  
 

user.where((x,i)=>users.FindIndex(z=>z.name==x.name)==i)


去重,这条语句返回结果只保留users这个List中重复的元素的第一个(name相等认为重复)。

3、使用循环,判断每个元素是否重复

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4.   
  5. namespace NonDuplicateList  
  6. {  
  7.     class Program  
  8.     {  
  9.         static void Main(string[] args)  
  10.         {  
  11.             List<User> users = new List<User>();  
  12.             users.Add(new User("张三""永丰路299号"));  
  13.             users.Add(new User("张三""上地西路8号"));//重复项,去重后将删掉  
  14.             users.Add(new User("李四""海鹰路甲一号"));  
  15.   
  16.             List<User> nonDuplicateList1 = users.Distinct().ToList();//通过User类的Equals实现去重  
  17.             List<User> nonDuplicateList2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重  
  18.             List<User> nonDuplicateList3 = new List<User>();//通过循环方式去重  
  19.             foreach(User user in users)  
  20.             {  
  21.                 if(nonDuplicateList3.Exists(x=>x.name==user.name) == false)  
  22.                 {  
  23.                     nonDuplicateList3.Add(user);  
  24.                 }  
  25.             }  
  26.   
  27.             foreach(List<User> list in new Object[]{nonDuplicateList1,nonDuplicateList2,nonDuplicateList3})//打印出三个List的元素  
  28.             {  
  29.                 Console.Write("nonDuplicateList:\r\n");  
  30.                 foreach(User u in list)  
  31.                 {  
  32.                     Console.WriteLine("\t" + u.ToString());  
  33.                 }  
  34.             }  
  35.             Console.Read();  
  36.         }  
  37.     }  
  38.   
  39.     class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重  
  40.     {  
  41.         public string name { getset; }  
  42.         string address;  
  43.   
  44.         public User(string _name, string _address)  
  45.         {  
  46.             name = _name;  
  47.             address = _address;  
  48.         }  
  49.   
  50.         public override string ToString()  
  51.         {  
  52.             return string.Format("name:{0},\taddress:{1}", name, address);  
  53.         }  
  54.   
  55.         public bool Equals(User other)  
  56.         {  
  57.             return this.name == other.name;  
  58.         }  
  59.         public override int GetHashCode()  
  60.         {  
  61.             return name.GetHashCode();  
  62.         }  
  63.     }  
  64. }  




可以使用多种方法对Python的List的元素进行去重操作。一种常见的方法是使用set方法,将List转换为一个元素无序且不重复的set对象,然后比较set对象的长度和原List的长度来判断是否有重复元素。另一种方法是利用append的方式,将原List的元素添加到一个新的List,确保新List不存在重复的元素,然后比较两个List的长度来判断是否有重复元素。还可以使用fromkeys的方法,创建一个字典,由于字典的键会自动去重,可以比较字典和原List的长度来判断是否有重复元素。另外,还可以使用Counter来对List元素出现的次数进行统计,从而判断是否有重复元素。123 #### 引用[.reference_title] - *1* [python List去重](https://blog.csdn.net/weixin_45063703/article/details/121281921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [python list去重的两种方法](https://blog.csdn.net/sinat_38682860/article/details/118608763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值