两个list进行比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个list进行比较相关的知识,希望对你有一定的参考价值。

list1[1,2,3,4,5]
list2[1,2,6]
如何用两个循环比较,可以得到1中没有而2中有的数据6
以及2中没有1中有的数据 2,4,5
求具体代码 谢谢

参考技术A l1 = filter(lambda x:x not in list1, list2) #得到lsit2中不在lsit1中的数
l2 = filter(lambda x:x not in list2, list1) #得到lsit1中不在lsit2中的数
参考技术B 只对两个有序list有效,没测试过:

iterator it1 = list1.begin();
iterator it2 = list2.begin();

for (;it2 != list2.end();it2++)

LoopInHere:
if(it1 == list1.end())

std::cout << it2.value() << std::endl;
continue;

if(it1.value() == it2.value())

it1 ++;
continue;

else if(it1.value() < it2.value())

std::cout << it1.value() << std::endl;
it1 ++;
goto LoopInHere;

else

std::cout << it2.value() << std::endl;
continue;

本回答被提问者采纳
参考技术C 用for循环嵌套 就能完成了 参考技术D 只能用循环来解决。

listA的数据量比listB的数据量大的时候:
for (int i = 0; i < listB.toArray().length; i++)
if (listA.contains(listB.toArray()[i]))
System.out.println(listB.toArray()[i]);



从问题补充来看listA应该不是直接存放数据,而是存放数据的集合,这样就需要把具体什么类型的集合说清除否则无法解答。

假设listA用一个数组存放“ID”“NAME”“AGE”列而listB直接存放“PID”的话。
listA.add(new String[] "id", "name", "age");
listB.add("pid");
for (int i = 0; i < listA .toArray().length; i++)
if (listB .contains(((String[])listA .toArray()[i])[0]))
System.out.println(
"id : " + ((String[])listA .toArray()[i])[0] +
"name : " + ((String[])listA .toArray()[i])[1] +
"age : " + ((String[])listA .toArray()[i])[2]
);



据我现在的水平只能想到用循环了,特别是你的List中放的还那么复杂。
虽然数据量大的时候用循环是很消耗资源,但是没有更好选择的情况下也只能用循环了。
第5个回答  2011-09-29 你的两个list是有序的还是无序的?

PHP 比较两个数组是否是相同

``` if($dk_list){ //合并另一个数组,组成新的数组 $res_33 = array_merge($_res2,$dk_list); //比较数组和移除数组中重复的值 进行比较个数 if (count($res_33) == count(array_unique($res_33))) { //执行如果不相同的操作 } } ``` > 更多精彩文章请关注 [王明昌博客](https://www.wangmingchang.com)

以上是关于两个list进行比较的主要内容,如果未能解决你的问题,请参考以下文章

大数据量情况下高效比较两个list

java 比较两个list数组问题

java 两个Map进行比较

如何把两个list放到一个list中,然后在页面能获取到ID

C# 判断两个集合(List)是否相等

比较两个list里是不是有相同的元素