2014-09-29 73 views
1

我有两个列表。我想检查一个列表是否是其他列表的子集。如何在比较两个列表时忽略' n'

list1 = ['12345678\n', '87654321'] 
list2 = ['','12345678', '87654321', '23456789'] 

问题是我的第一个列表即列表1将始终包含\ n因为我从具有单独的lines.But项目(S)的文件读取它,我想忽略这个\ n并继续比较。我的下面的代码总是进入,否则部分。有没有办法让True方案不修改两个列表? 我下面的代码:

flag = True     # Initialized value of flag to default 'True' at beginning 

for val in list1: 
    if val not in list2: 
    flag = False 

if flag == True 
    ....       # Do some operation if flag is 'True' 
    .... 
else 
    print 'list1 is not a subset of list2'  

回答

2

您可以使用strip剥离了所有的空格字符,然后比较,为在第二列表中的项目。此外,您还可以用all取代你的for循环:

>>> all(e.strip() in list2 for e in list1) 
True 

此外,你可能会认为,当你创建list1剥离换行符,并使用set而不是list加快查找。

>>> set(map(str.strip, list1)).issubset(list2) 
True