首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从两个List中筛选出相同的值

问题 现有社保卡和身份证若干,想要匹配筛选出一一对应的社保卡和身份证。 转换为List socialList,和List idList,从二者中找出匹配的社保卡。...:遍历 只要做两轮循环即可。...采用Hash 通过观察发现,两个list取相同的部分时,每次都遍历两个list。那么,可以把判断条件放入Hash中,判断hash是否存在来代替遍历查找。...如此推出这种做法的时间复杂度为O(m,n)=2m+n. 当然,更重要的是这种写法更让人喜欢,天然不喜欢嵌套的判断,喜欢扁平化的风格。...事实上还要更快,因为hash还需要创建更多的对象。然而,大部分情况下,n也就是第二个数组的长度是大于3的。这就是为什么说hash要更好写。

6.1K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    盘点使用Pandas解决问题:对比两列数据取最大值的5个方法

    一、前言 前几天在Python星耀交流群有个叫【iLost】的粉丝问了一个关于使用pandas解决两列数据对比的问题,这里拿出来给大家分享下,一起学习。...大概意思是说在DF中有2列数据,想每行取两列数据中的最大值,形成一个新列,该怎么写?最开始【iLost】自己使用了循环的方法写出了代码,当然是可行的,但是写的就比较难受了。...】,这里使用apply方法来解决,代码如下 df['max3'] = df[['cell1', 'cell2']].apply(max, axis=1) df 方法四:【常州-销售-MT】解答 这个方法也是才哥群里的一个大佬给的思路...使用numpy结合pandas,代码如下: df['max4'] = np.where(df['cell1'] > df['cell2'],df['cell1'], df['cell2']) df...这篇文章基于粉丝提问,针对df中,想在每行取两列数据中的最大值,作为新的一列问题,给出了具体说明和演示,一共5个方法,顺利地帮助粉丝解决了问题,也帮助大家玩转Pandas,学习Python相关知识。

    4.3K30

    如何使用Excel将某几列有值的标题显示到新列中

    如果我们有好几列有内容,而我们希望在新列中将有内容的列的标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH的方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示值,也可以显示值的标题,还可以多个列有值的时候同时显示。...Year 8 - - - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示值...,则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断值是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40

    「mysql优化专题」你们要的多表查询优化来啦!请查收(4)

    如果还有第三个参与Join,则再通过前两个表的Join 结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复。...要求:两次查询的列数必须一致(列的类型可以不一样,但推荐查询的每一列,相对应的类型要一样) 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。...如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。...注意: 1、UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名 2、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。...同时,每条 SELECT 语句中的列的顺序必须相同 UNION ALL的作用和语法: 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

    2K20

    Pandas数据合并:concat与merge

    axis:指定连接的方向,默认为0,表示按行连接;1表示按列连接。join:控制连接时如何处理索引对齐。可选值有'inner'(取交集)和'outer'(取并集),默认为'outer'。...(三)案例分析假设我们有两个关于学生成绩的DataFrame,分别记录了语文成绩和数学成绩,且它们具有相同的索引(学生编号)。我们可以使用concat将其横向拼接。...how:指定合并的方式,常见的有'inner'(内连接)、'outer'(外连接)、'left'(左连接)、'right'(右连接)。on:指定用于合并的列名,当左右两侧的列名相同时使用此参数。...对于concat,当join='outer'时,如果不同对象之间的索引不完全一致,可能会导致结果中出现NaN值。可以通过检查索引的一致性或者调整join参数来解决。...为了避免这种情况,在合并之前先检查列名是否正确,或者使用if 'key' in df.columns:语句来判断列是否存在。

    14610

    两个案例带你看懂YashanDB执行计划

    NAME VARCHAR(10));对于以上的两张表,我们将使用两个较为简单的查询语句用作范例,其中一个包含子查询信息,另一个不包含,为大家详细讲解如何阅读执行计划。...对于不同的连接方式来说,上下两个孩子的含义也不相同,YashanDB当前支持哈希(Hash)连接,嵌套循环(Nested Loop)连接还有归并(Merge)连接,哈希连接中上方子节点是探查表(Probe...TABLE ACCESS BY INDEX ROWID:回表操作,严格来说属于任意索引扫描的一部分,当索引所能提供的列不完全满足上方算子要求时,索引需要根据自身ROWID信息,回到表中重新取得缺失的列数据...图 5:例1语句打开投影后的显示结果在图中我们可以看到,正常情况下,两张两列的表进行连接后的结果应该是4列,而此处序号为2的哈希连接,其projection信息仅有T1.SCORE与T2.NAME两列,...这是由于上层分组算子仅使用了这两列进行运算,因此传递给下层算子的需求也仅仅只是这两列。

    10910

    提升查询技能,这7条SQL查询错误必须解决

    这里的逻辑问题在于,你编写的查询得出的是“product id”列的值是否未知,而无法得出这一列的值是否是未知的产品。...这并不完全是一个错误,只是演示了两者的用法,你可以根据业务需求选择最佳方案。...在这里,条件语句AND在两个表格连接发生之前计算。可以把此查询看作只适用于一个表(“product”表)的WHERE子句。...现在,由于右连接,结果中出现了d.product_id≤1的行(显然还有p.product_id>1的行)。 请注意,ON子句过滤和WHERE子句过滤只在左/右/外连接时不同,而在内连接时相同。...6.BETWEEN的使用不正确 如果不清楚BETWEEN的有效范围,也许会得不到想要的查询结果。BETWEEN x AND y语句的有效范围包含x和y。

    1.2K20

    MySQL关键字Explain 性能优化神器

    额外还有filtered列,是一个半分比的值,rows*filtered / 100可以估算出将要和explain中前一个表进行连接的行数(前一个表指explain中的id值比当前表id值小的表)。...type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行对应的大概范围。...如果没有使用索引,则改列为NULL。如果想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用force index、 ignore index。...key_len列 这一列显示了mysql在索引里使用的字节数,通过这个值可以估算出具体使用了索引中的哪些列。...一般是查询条件或关联条件中等号右边的值,如果是常量那么ref列是const,非常量的话ref列就是字段名。

    88920

    数据库基础知识

    表中的任何列都可以作为主键,只要它满足以下条件: 任意两行都不具有相同的主键值; 每个行都必须具有一个主键值(主键列不允许NULL值)。...主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。...---- 主键的最好习惯 除 MySQL 强制实施的规则外,应该坚持的 几个普遍认可的最好习惯为: 不更新主键列中的值; 不重用主键列的值; 不在主键列中使用可能会更改的值。...(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)...但是 SQL 虽然企图抽象出一个查询规范,但是事实上任意两个 DBMS 实现的 SQL 都不完全相同(大体相同)。

    1.3K50

    SQL | SQL 必知必会笔记 (一 )

    列(column) 表中的一个字段,所有表都是有一个和 多个列组成 行(row) 表中的一个记录(record) 主键(primary key) 一列(或一组列),其值能够唯一标识表中每一行 关键字(...这些单词称为 关键字,每个 SQL 语句都是由一个或多个关键字构成的。使用 SELECT 关键字检索表数据,必须给出想选择什么(SELECT)和从什么地方选择两条信息(FROM)。...比如 SELECT DISTINCT vend_id, prod_id, prod_price 因为指定的两列不完全相同,所以所有的行都会被检索出来。...使用注释 行注释 1:注释使用 --(两个连字符)嵌在行内。...NULL 表示空值,确定是否空值,不能简单的 = NULL,SELECT 语句有一个特殊的 WHERE 子句 IS NULL ,可用来检查具有 NULL 值的列。

    2.6K51

    Explain详解与索引优化实践

    使用explain关键字可以模拟优化器执行SQL语句,从而知道MySQL是如何使用索引来处理你的SQL查询语句以及连接表,可以分析查询语句或是结构的性能瓶颈,帮助我们选择更好的索引和写出更优化的查询语句...extended查看执行计划会比explain多一列filtered,该列给出一个百分比的值,这个值和rows列一起使用,可以估计出那些将要和explain中的前一个表进行连接的行的数目,前一个表就是指...(7)key_len列 这一列显示了MySQL在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。...:4字节 datetime:8字节 ④ 如果字段允许为NULL,需要1字节记录是否为NULL (8)ref列 这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量)、...Using where类似,查询的列不完全被索引覆盖,where条件中是一个前导列的范围。

    65520

    HAWQ取代传统数仓实践(十八)——层次维度

    为了识别数据仓库里一个维度的层次,首先要理解维度中列的含义,然后识别两个或多个列是否具有相同的主题。例如,年、季度、月和日具有相同的主题,因为它们都是关于日期的。...具有相同主题的列形成一个组,组中的一列必须包含至少一个组内的其它成员(除了最低级别的列),如在前面提到的组中,月包含日。这些列的链条形成了一个层次,例如,年-季度-月-日这个链条是一个日期维度的层次。...,quarter),(product_category,year))) x order by product_category , date , gid desc, time;         以上两种不同写法的查询语句结果相同...图1         第一条语句的子查询中使用union all集合操作将年、季度、月三个级别的汇总数据联合成一个结果集。注意union all的每个查询必须包含相同个数和类型的字段。...函数值使用了位图策略(bitvector,位向量),即它的二进制形式中的每一位表示对应列是否参与分组,如果某一列参与了分组,对应位就被置为1,否则为0。最后将二进制数转换为十进制数返回。

    1.4K60

    最完整的Explain总结,SQL优化不再困难

    ,但是这些记录的id值都是相同的,比如: mysql> EXPLAIN SELECT * FROM t1 INNER JOIN t2; 可以看到,上述连接查询中参与连接的t1和t2表分别对应一条记录,...注意: 在连接查询的执行计划中,每个表都会对应一条记录,这些记录的id列的值是相同的,出现在前边的表表示驱动表,出现在后边的表表示被驱动表。...然后看执行计划的前两条记录的id值都为1,说明这两条记录对应的表进行连接查询,需要注意的是第二条记录的table列的值是,说明该表其实就是id为2对应的子查询执行之后产生的物化表,...type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。...unique_subquery 类似于两表连接中被驱动表的eq_ref访问方法,unique_subquery是针对在一些包含IN子查询的查询语句中,如果查询优化器决定将IN子查询转换为EXISTS子查询

    64120

    java架构之路(三)Mysql之Explain使用详解

    从sql语句我们可以看出来,我们有两个select,也就是有两个id,然后呢,我们会优先运行红颜色的select,也就是id为2的,再运行id为1的select。...type列: 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概 范围。...如果想强制mysql使用或忽视possible_keys列中的索 引,在查询中使用 force index、ignore index。...key_len列: 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。...简单说一下大概常见的都有什么 Using index:使用覆盖索引 Using where:使用 where 语句来处理结果,查询的列未被索引覆盖 Using index condition:查询的列不完全被索引覆盖

    81720

    Kettle构建Hadoop ETL实践(八-1):维度表技术

    对基本维度和子维度表来说,属性(如品牌和分类描述)是公共的,其标识和定义相同,两个表中的值相同,然而,基本维度和子维度表的主键是不同的。...视图具有唯一的名字,如果所在数据库中已经存在同名的表或视图,创建语句会抛出错误信息,可以使用CREATE ... IF NOT EXISTS语句跳过错误。...尽管不能连接到单一的日期维度表,但可以建立并管理单独的物理日期维度表,然后使用视图或别名建立两个不同日期维度的描述。注意在每个视图或别名列中需要唯一的标识。...为了识别数据仓库里一个维度的层次,首先要理解维度中列的含义,然后识别两个或多个列是否具有相同的主题。例如,年、季度、月和日具有相同的主题,因为它们都是关于日期的。...参差不齐的层次 在一个或多个级别上没有数据的层次称为不完全层次。例如在特定月份没有促销期,那么月维度就具有不完全促销期层次。本小节说明不完全层次,还有在促销期上如何应用它。

    3.5K31

    数据库基础知识详解三:MVCC、范式以及表连接方式

    成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键(一张表可以有多个,可以有重复的,可以是空值)。...举例:如果将“电话”作为一个属性(即数据表中的一列),是不符合1NF的,因为电话这个属性可以分解为家庭电话和移动电话。如果将“移动电话”作为一个属性,就符合1NF。...举例:(学号,课程名)这个主属性集可以唯一决定成绩,但是对于学生姓名这个属性,(学号,课程名)这个属性集就是冗余的,所以学生姓名不完全依赖于(学号,课程名)这一属性集。 问题:那如何使其满足2NF?...10.表连接方式 先创建两张简单的数据表以作后续的演示: 学生表 成绩表 内连接(Inner Join):仅将两个表中满足连接条件的行组合起来作为结果集 自然连接:只考虑属性相同的元组对。...,右边的表数据只显示共同有的那部分(就比如说成绩表和课程表连接,只显示两边有学号相等的,如果某一边的学号另一边没出现,那就不显示),没有对应的部分补NULL。

    56660

    Explain详解与索引最佳实践

    使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。...在查询中的每个表会输出一行,如果有两个表通过 join 连接查询,那么会输出两行。表的意义相当广泛:可以是子查询、一个 union 结果等。...额外还有 filtered 列,是一个半分比的值,rows * filtered/100 可以估算出将要和 explain 中前一个表进行连接的行数(前一个表指 explain 中的id值比当前表id...4. type列 这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。...7. key_len列 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。

    83120

    【mysql系列】细谈explain执行计划之“谜”

    执行计划中各个列代表具体含义解释如下: id: 查询的序号,包含一组数字,表示查询中执行select子句或操作表的顺序 1.id相同,执行顺序从上往下 2.id不同,id值越大,优先级越高,越先执行 select_type...ref: 显示索引的哪一列被使用了,如果有可能是一个常数,哪些列或常量被用于查询索引列上的值 rows: 根据表统计信息以及索引选用情况,大致估算出找到所需的记录所需要读取的行数 filtered: 指返回结果的行占需要读到的行...理论知识中介绍到id值越大执行优先级越高,id值相同则从上往下执行,id为null最后执行。从图中ID列,我们看到ID=2的先执行即先查询teacher表。...这可能是在 const 之外最好的连接类型了,简单的 select 查询不会出现这种 type。 ? id列都是1,当id列值一样时,从上到下执行表。...Using index condition Extra显示Using index condition与Using where类似,查询的列不完全被索引列覆盖,where条件中是一个前导列的范围。

    91710
    领券