python 如何找出两个list中的相同元素

作者&投稿:滑芝 (若有异议请与网页底部的电邮联系)
JAVA里面,怎样找出两个list中相同的元素,~

循环取出list1的元素,然后循环和list2中的元素进行比较,如果相等就输出该元素。代码如下:
import java.util.ArrayList;import java.util.List;public class Test {public static void main(String[] args) {List list1 = new ArrayList();List list2 = new ArrayList();list1.add(2);list1.add(3);list1.add(5);list2.add(2);list2.add(5);list2.add(6);list2.add(8);for(int i = 0; i < list1.size();i++){int temp = list1.get(i);for(int j = 0; j < list2.size();j++){if(temp == list2.get(j)){System.out.println("有相同的元素: " + temp);}}}}}

list1= ['0+1998', '1+1998', '2+1998', '3+1998']
list2 = ['1+1998', '2+1998']
list3 = [1 if i in list2 else 0 for i in list1]
print(list3)

这个问题有多种解法,最常见的是brute-force 也叫暴力枚举法,也就是把两个list当中的每个元素都取出来进行两两比较,直到找到相同元素。设第一个数组的长度为n,第二个数组的长度为m,则时间复杂度为O(n*m),空间复杂度为O(1)
但是个问题常见的解决方法是哈希表。在Python当中有Dictionary这种数据类型,其实是一个哈希表。运用这种数据类型,可以迅速检索到想要的元素。但这种方法需要存储一组元素,所以时间复杂度为O(n),空间复杂度为O(m)。
以下是程序:
def find_same_element(l1, l2):
dist = {}
for i in l1:
dist[i] = 1
for i in l2:
if dist.get(i) > None:
return i
return None

以下是检验
l1 = [1, 2, '34', 34, 5]
l2 = [4, 7, 8]
print find_same_element(l1, l2)
应当输出None
l1 = [1, 2, '34', 34, 5]
l2 = [4, 7, 8,5]
print find_same_element(l1, l2)
应当输出5

这个函数只能找到一个共同元素,如果两个list有多个相同元素则只能输出中间的一个。

这个问题常见于面试题,属于最简单的面试题目。需要给面试官说明的是,
第一,哈希表可以快速检索元素,
第二,python有独特的数据类型,
第三,多个共同元素的情况需要面试官告知如何处理,
第四,注意没有共同元素的时候的输出(程序中为None但面试官希望你能提出这个问题)

可以对第二个list的元素进行遍历,检查是否出现在第二个list当中,如果使用表理解,可以使用一行代码完成任务。

list1 = [1,2,3,4,5]
list2 = [4,5,6,7,8]
print [l for l in list1 if l in list2]
# [4,5]

如果每一个列表中均没有重复的元素,那么还有另外一种更好的办法。首先把两个list转换成set,然后对两个set取交集,即可得到两个list的重复元素。

set1 = set(list1)
set2 = set(list2)
print set1 & set 2
# {4,5}


[x for x in list1 if x in list2]

可以看下MAP函数

print [x for x in list2 if x in list1]
就是这样,没有什么分行。


寒亭区19529641900: python 如何找出两个list中的相同元素 -
司马送信立: 这个问题有多种解法,最常见的是brute-force 也叫暴力枚举法,也就是把两个list当中的每个元素都取出来进行两两比较,直到找到相同元素.设第一个数组的长度为n,第二个数组的长度为m,则时间复杂度为O(n*m),空间复杂度为O(1) 但是个...

寒亭区19529641900: python二维数组怎么求交集 -
司马送信立: 本文实例讲述了python获得两个数组交集、并集、差集的房部分.分享给大家供大家参考.具体如下: 1. 获取两个list 的交集 #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print tmp #[2, 5]#方法二 print list(set(a).intersection(set(b...

寒亭区19529641900: python 寻找两个list 相同的元素? -
司马送信立: list1= ['0+1998', '1+1998', '2+1998', '3+1998'] list2 = ['1+1998', '2+1998'] list3 = [1 if i in list2 else 0 for i in list1] print(list3)

寒亭区19529641900: python怎么找出list重复的元素 -
司马送信立: 可以对第二个list的元素进行遍历,检查是否出现在第二个list当中,如果使用表理解,可以使用一行代码完成任务. list1 = [1,2,3,4,5] list2 = [4,5,6,7,8] print [l for l in list1 if l in list2] # [4,5] 如果每一个列表中均没有重复的元素,那么还有另外一种更好的办法.首先把两个list转换成set,然后对两个set取交集,即可得到两个list的重复元素. set1 = set(list1) set2 = set(list2) print set1 & set 2 # {4,5}

寒亭区19529641900: python中如何去两个文件的并集 -
司马送信立: 有时候,为了需求,需要统计两个 list 之间的交集,并集,差集.查询了一些资料,现在总结在下面: 1. 获取两个list 的交集#方法一:a=[2,3,4,5]b=[2,5,8]tmp = [val for val in a if val in b]print tmp#[2, 5]#方法二print list(set(a).intersection(...

寒亭区19529641900: python 怎么判断两个list 一样 -
司马送信立: # 如果是简单对象的话,使用集合list1 = [1,3,5,4,3,5,7]list2 = [2,3,4,5,3,4,5,6,7]print set(list1) & set(list2) # set([3, 4, 5, 7])# 复杂对象的话这种方法不适用, 需要自己写

寒亭区19529641900: python把列表前几个元素提取到新列表 -
司马送信立: python把列表前几个元素提取到新列表步骤如下: 1、打开python语言命令窗口,定义一个列表变量C并进行赋值. 2、利用获取列表中的序号,获取对应的元素,然后将这些元素拼接成一个新的列表. 3、还可以定义一个空列表,然后使用for...in语句循环生成元素,装载到空列表中. 4、除了上述两种方法之外,还可以使用切片截取的功能. 5、切片的序号除了可以是两个之外,还可以是一个,缺了第一个留下第二个. 6、除了这之外,还可以是一个负数,表示从后到前进行截取.

寒亭区19529641900: 如何用Python比较两个列表,并进行合并?如何用Python比较两个列表,并将符合要求的元素放入放到新的列表中?形如:list1=[('a',1),('b',5),('c',3)]list2=[('a',2... -
司马送信立:[答案] list1=[('a',1),('b',5),('c',3)] list2=[('a',2),('b',2)] hash = {} for i,k in list1+list2: if i not in hash: hash[i] = k elif k >= hash[i]: hash[i] = k list3 = hash.items() print(list3) 这样吗 随便写的

寒亭区19529641900: 如何排列组合合并Python里两个list的元素 -
司马送信立: 如何排列组合合并Python里两个list的元素?def createDeck():I=[1,2,3,4,5,6,7,8,9,10] J=['spades','hearts','diamonds','clubs'] A=[(i,j)for i in I for j in J] return (A) 最后想要的结果是这样显示的:>>> c r e ateDe c k( )>>> [ ( 1, 'spades ') , (2 , ' spades...

寒亭区19529641900: python 怎样求两个list的公共元素 -
司马送信立: 123 fori inlist1: ifi inlist2: printi

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网