Erlang生成式实现的列表去重、求交集及并集

%集合去重,Acc初始传入为[],存放的是最终的结果

delSame([],Acc) -> Acc;

delSame([Pre|T],Acc) ->checkSame([X||X<-T,X=/=Pre],Acc++[Pre]).

%求交集

crossList(L1,L2) ->

[X||X<-L1,Y<-L2,X=:=Y].

%求并集

mergeList(L1,L2)->

delSame(lists:merge(L1,L2),[]).

总结:(1)erlang的生成式中都是guard;(2)erlang的生成式是以笛卡尔积的形式;

时间: 2024-12-11 14:44:09

Erlang生成式实现的列表去重、求交集及并集的相关文章

【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集

#include <iostream> #include <vector> #include <algorithm> //sort函数.交并补函数 #include <iterator> //求交并补使用到的迭代器 using namespace std; //打印容器vector void print_vector(vector<int> v){ if(v.size()>0){ cout<<"{"; for

Linux 两个文件求交集、并集、差集

一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.txt | uniq -u b.txt - a.txt: sort b.txt a.txt a.txt | uniq -u 四.相关的解释 使用sort可以将文件进行排序,可以使用sort后面的玲玲,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等 uniq为删除文件中重

java集合运算:求交集,并集,集合差

今天突然想用Java实现如何用集合实现交集,并集和差集的运算了!主要是看Python语言的时候想起来的. 实现主要使用的Set集合,Set集合的特点是集合内的元素不可重复. 具体代码如何: 1 package com.chengxuyuanzhilu; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 public class CollectionOperation { 7 public static void main(Stri

AutoCAD.Net/C#.Net QQ群:193522571 LinQ 两个集合求交集、并集

//取得交集 Pn = PnFace.Intersect(PnType).ToList(); //取得并集 Pn = PnFace.Concat(PnType).ToList();

数组去重和两个数组求交集

引言 今天在项目中一个功能要用到两个数组求交集的算法. 大概是这样: 两个表格分别用easyui datagrid实现,要把A表格的一列数据和B表格的一列数据取出来,然后去重,去重后求交集. 那么在计算出的交集中分别根据求出的数据选中两个表格的对应行. 故用到js数组去重和求交集. 交集 Array.prototype.intersect = function(b) { var flip = {}; var res = []; for(var i=0; i< b.length; i++) fli

python中列表之间求差集、交集、并集

求两个列表的交集.并集.差集 def diff(listA, listB): # 求交集的两种方式 retA = [i for i in listA if i in listB] retB = list(set(listA).intersection(set(listB))) print("retA is :", retA) print("retB is :", retB) # 求并集 retC = list(set(listA).union(set(listB))

参数筛选查询——多表求交集(INTERSECT)+WITH AS

先说要实现的需求:一个产品表A,一个属性与属性值表B(属性与属性值存于同一个表,类似于父级与子级的关系),一个产品-属性关联表C,要实现通过多个参数筛选获取符合条件的产品记录. 本能第一反应就是用and连接多个参数(参数个数不定),谁知结果集却是空,主要是表的设计结构决定,表C是一个产品的一个属性就是一条记录,也就是说一个产品可能有多个属性,对应多条记录.而一个属性又可能关联着多个产品,即产品与属性是多对多的关系.用and连接肯定是得不到结果的.怎么办?转换一下思路,用and是将所有属性值一起作

2017.7.17 列表去重,列表元组,集合

生成列表: aa = [i for i in range(1,18)] 列表    a = [11,22,3,11,22,3]增删改查 元组    b = (11,22,33,11,22,33)只读 集合    c = {11,22,33} 增删改查,但是元素不能重复 列表去重 d = set(a)  d 是集合 f = list(d)    f是列表

java中求两个数组(集合)的交集,并集,差集

对于两个数组 arr1=[1,3,4,5,8,9] arr2=[2,3,7,8,9] 求出交集与并集 test.java 1 import java.util.ArrayList; 2 import java.util.Collections; 3 4 5 public class test1 { 6 public static void main(String[] args) { 7 ArrayList<Integer> tmplist=new ArrayList<Integer>