比较Python中的两个列表

时间:2012-07-28 02:19:24

标签: python string list variables comparison

所以为了给出一个粗略的例子而没有为它编写任何代码,我很好奇我将如何弄清楚两个列表的共同点。

示例:

listA = ['a', 'b', 'c']
listB = ['a', 'h', 'c']

我希望能够回归:

['a', 'c']

怎么样?

可能使用变量字符串,如:

john = 'I love yellow and green'
mary = 'I love yellow and red'

返回:

'I love yellow and'

4 个答案:

答案 0 :(得分:18)

使用set intersection:

list(set(listA) & set(listB))

给出:

['a', 'c']

请注意,由于我们正在处理,因此可以保留顺序:

' '.join(list(set(john.split()) & set(mary.split())))
'I and love yellow'

使用join()将结果列表转换为字符串。

-

对于下面的示例/评论,此将保留订单(受到@DSM评论的启发)

' '.join([j for j, m in zip(john.split(), mary.split()) if j==m])
'I love yellow and'

对于列表长度不同的情况,使用下面评论中指定的结果:

aa = ['a', 'b', 'c']
bb = ['c', 'b', 'd', 'a']

[a for a, b in zip(aa, bb) if a==b]
['b']

答案 1 :(得分:2)

如果两个列表的长度相同,则可以进行并排迭代,如下所示:

list_common = []
for a, b in zip(list_a, list_b):
    if a == b:
        list_common.append(a)

答案 2 :(得分:2)

将它们作为集合相交:

set(listA) & set(listB)

答案 3 :(得分:1)

我认为这是你想问的任何问题,我会尽力回答

    listA = ['a', 'b', 'c']
listB = ['a', 'h', 'c']
new1=[]
for a in listA:
    if a in listB:
        new1.append(a)

john = 'I love yellow and green'
mary = 'I love yellow and red'
j=john.split()
m=mary.split()
new2 = []
for a in j:
    if a in m:
        new2.append(a)
x = " ".join(new2)
print(x)