因此,为了给出一个没有任何代码编写的粗略示例,我很好奇我将如何弄清楚两个列表的共同点。在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'
因此,为了给出一个没有任何代码编写的粗略示例,我很好奇我将如何弄清楚两个列表的共同点。在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'
使用交集:
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']
如果两个列表的长度相同,则可以做一个并排迭代对,就像这样:
list_common = []
for a, b in zip(list_a, list_b):
if a == b:
list_common.append(a)
你需要使用'zip(list_a,list_b)',我想。 – DSM 2012-07-28 02:23:57
你是对的。 – CosmicComputer 2012-07-28 02:31:36
它们长度不一样。我可能有一个列表,其中有 ['green'] ,另一个列表有 ['red','yellow','green']我需要它返回['green'] – Matthew 2012-07-28 02:38:52
反正是有维持秩序? – Matthew 2012-07-28 02:37:16
@Matthew:你希望这个方法在'['a','b','c']'和'['c','b','d','a']' ? – liori 2012-07-28 02:38:37
我希望看到它返回'['b']'。 – Matthew 2012-07-28 02:40:52