for循环求交集

for循环方式求交集

#!/usr/bin/env python
#coding:utf-8
#取交集
#定义两个序列对象,求alist与blist对象的交集元素
alist = [2,9,3,4,5,6,7,8]
blist = [9,2,1,10,33,2,3]

#定义一个空list对象,放最终的结果
reslut = []

#遍历alist对象
for x in alist:
  if x in blist: #如果alist对象中有元素在blist对象里则添加到reslut对象
    reslut.append(x)
print reslut

2、改成函数的方式

alist = [2,9,3,4,5,6,7,8]
blist = [9,2,1,10,33,2,3]

def intersect(seq1,seq2):
    reslut = []
    for x in alist:
        if x in blist:
            reslut.append(x)
    return reslut

if __name__ == ‘__main__‘:
    reslut = intersect(alist,blist)
    print reslut

3、使用类的方式

class Ops:
    ‘‘‘定义类函数,返回两个序列的交集‘‘‘
    def intersect(self,seq1,seq2):
        reslut = []
        for i in seq1:
            if i in seq2:
                reslut.append(i)
        return reslut

if __name__ == ‘__main__‘:
    a_seq = [1,3,5,7,9]
    b_seq = [1,2,4,7,8]
    res = Ops()
    reslut = res.intersect(a_seq,b_seq)
    print reslut

当然用set集合的方法直接就可以搞定。

注意alist对象与blist对象取交集,不等同于blist对象与alist对象去交集的结果。

时间: 2024-12-17 05:38:48

for循环求交集的相关文章

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

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

ACM_求交集

求交集 Time Limit: 2000/1000ms (Java/Others) Problem Description: 输入集合A和B,按大小顺序输出A和B的交集. Input: 输入包含多组测试数据,每组输入两个整数m,n(1<=m,n<=10^2)分别代表集合A,B的元素个数,再输入集合A,B. Output: 按大小顺序输出A和B的交集. Sample Input: 5 7 80 6 18 44 13 18 39 89 88 6 13 44 Sample Output: 6 13

Java大集合求交集的方法比较

两个List集合求交集想必学过Java的都知道用系统自带的retainAll()方法,但是在数据量比较大时,这个方法效率并不高,利用空余时间研究了几种数据量较大时求两个集合交集的办法.本文主要研究了JDK自带方法求交集.Guava集合求交集.Java8的parallelStream并行流求交集.双指针方法求交集以及bitmap求交集的方法和效率. JDK自带方法 最常用的求交集方法,在小数据量的时候没什么问题,一旦两个集合的数据量达到几十万级别时,效率就严重偏低,底层实际上也是两个for循环,只

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的生

用for和while循环求e的值[e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n!]

/*编敲代码,依据下面公式求e的值. 要求用两种方法计算: 1)for循环.计算前50项 2)while循环,直至最后一项的值小于10-4 e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n! */ #include<stdio.h> //===================================================== //用for求e的值 double For() { double sum=1,temp=1; int i; for(i=1;i&

不用while if 循环求 1到n的和,还用到了!!这样的运算符

很好的题目.开始我也没有想出来. 不用while if 循环求 1到n的和 给了很多种解法,第一种是构造函数,然后累加static变量 第二种是虚函数,有父类子类,父类的结束,然后用 !!n来让 n不为0,都调用 数组下标[1]的,为0都调用[0]的. 第三种,函数指针类似虚函数,一个数组,两种函数指针,用!!n来分别调用. 第四种,利用模板偏特化来处理.但是编译器,对于递归深度有限制,所以n不能太大,不如上面几种方法通用.

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

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

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为删除文件中重

ecnu1624求交集多边形面积

链接 本来在刷hdu的一道题..一直没过,看到谈论区发现有凹的,我这种方法只能过凸多边形的相交面积.. 就找来这道题试下水. 两个凸多边形相交的部分要么没有 要么也是凸多边形,那就可以把这部分单独拿出来极角排序.叉积求面积.这部分的顶点要么p在q内的顶点,要么是q在p内的顶点,要么是两凸多边形的交点. 用到了点在多边形内的判定模板. 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #inclu