在python中识别列表中的公共元素

时间:2018-05-13 09:19:39

标签: python

我有两个清单。我需要比较元素列表中的任何元素是否匹配。 输入:

a = ['1001,1715']
b = ['1009,1715']

输出:1715

请建议怎么做? 我试过了:

set(''.join(a))

set(''.join(b)) 

但它给了我{'5', '0', '7', ',', '1'}。如何将['1001,1715']转换为[1001,1715]

4 个答案:

答案 0 :(得分:1)

a = ['1001,1715']
b = ['1009,1715']

def fun(a):
  return a[0].split(",")

def intersect(a, b):
  return list(set(a) & set(b))

print(intersect(fun(a),fun(b)))

答案 1 :(得分:0)

您可以使用set intersection:

set(a[0].split(',')).intersection(set(b[0].split(',')))

返回:

{'1715'}

'1001,1715'转换为['1001', '1715']只需使用.split(',')

完成

答案 2 :(得分:0)

您的问题分为两部分。

将字符串转换为整数组

由于您的字符串是列表中唯一的元素,因此您可以使用列表索引和str.splitmap

a_set = set(map(int, a[0].split(',')))
b_set = set(map(int, b[0].split(',')))

计算2组

的交集
res = a_set & b_set
# alternatively, a_set.intersection(b_set)

print(res)

{1715}

答案 3 :(得分:0)

如果您的列表包含更多元素(例如a = ['1001,1715','1009,2000']

,那么这是一种更通用的解决方案
a = [x for xs in a for x in xs.split(',')]
b = [x for xs in b for x in xs.split(',')]
common = set(a).intersection(set(b))

示例:

a = ['1001,1715','1009,2000']
b = ['1009,1715']

输出:

{'1009', '1715'}