比较Python中的两个列表

2024-04-19 09:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,为了给出一个还没有为它编写任何代码的粗略示例,我很好奇如何能够找出这两个列表的共同点。

示例:

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'

Tags: and字符串代码示例列表greenredjohn
3条回答

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

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

为此使用“设置交点”:

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']

将它们作为集合相交:

set(listA) & set(listB)

相关问题 更多 >