我有两个清单。我需要比较元素列表中的任何元素是否匹配。 输入:
a = ['1001,1715']
b = ['1009,1715']
输出:1715
请建议怎么做? 我试过了:
set(''.join(a))
和
set(''.join(b))
但它给了我{'5', '0', '7', ',', '1'}
。如何将['1001,1715']
转换为[1001,1715]
?
答案 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.split
与map
:
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'}