如何在Python 3中检查两个不同列表中的类似项?

How to check for similar items in two different lists in Python 3?

本问题已经有最佳答案,请猛点这里访问。

在python中,如何检查两个列表是否包含相同的项,并返回这些项的列表,或者如果匹配,返回true?

鉴于:

1
2
list1=[1,2,3,4,5]
list2=[2,4,6,8]

我如何返回:

1
list3=[2,4]

或者使用检查是否为真,如:

1
2
if MATCHES EXIST:
    DO SOMETHING

另外,如何将列表中的项连接成单个序列或字符串?

鉴于:

1
list1=[1,2,3,4,5]

我如何返回:

1
list2=[12345]


在python中,可以使用set从两个不同的列表中获取相似的项。这将为您提供两个不同列表中相同的值。

1
2
3
4
5
>>> a=[1,2,3]
>>> b=[2,3,4]
>>> set(a) & set(b)
{2, 3}
>>>

要以列表格式获取此输出,只需键入以下内容

1
2
>>> list(set(a) & set(b))
    [2, 3]

可以使用list("123")命令从字符串值生成列表。

1
2
3
4
>>> a="123"
>>> list(a)
['1', '2', '3']
>>>


你的第一个问题已经得到了@k-suthagar的很好回答,所以我会在这个问题上听从他的。虽然这里的方法稍有不同,但效果很好,返回一个新列表:

1
2
3
list1=[1,2,3,4,5]
list2=[4,2,3,9,9]
list3 = list( set( list1 ).intersection( set( list2 ) ) )

如果只想检查是否有匹配项,可以执行以下操作:

1
2
3
4
if set( list1 ).intersection( set( list2 ) ):
    print("These lists contain some identical elements." )
else:
    print("These lists do NOT contain identical elements." )

关于第二个问题,您可以执行以下操作:

1
2
3
4
5
list1=[1,2,3,4,5]
list2 = [ int( ''.join(str(x) for x in list1) ) ]
print( list2 )

[12345]

如果您希望联接字符串,或者希望结果是字符串,只需除去int强制:

1
2
3
list1=[1,2,3,4,5]
list2 = [ ''.join(str(x) for x in list1) ]
print( list2 )

注意:在stackoverflow上,每个帖子问一个问题,并向我们展示您所做的尝试是一个很好的实践。