如何忽视' \ n'同时比较两个清单

时间:2014-09-29 08:59:12

标签: list python-2.7

我有两个清单。我想检查一个列表是否是其他列表的子集。

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

问题是我的第一个列表,即 list1 将始终包含 \ n ,因为我正在从具有单独行中的项目的文件中读取它。但我想忽略这个 \ n 并继续比较。我的下面代码总是进入 else 部分。有没有办法在不修改两个列表的情况下实现 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'    

1 个答案:

答案 0 :(得分: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