List 如何忽略'\n';在比较两个列表时
我有两张单子。我想检查一个列表是否是另一个列表的子集List 如何忽略'\n';在比较两个列表时,list,python-2.7,List,Python 2.7,我有两张单子。我想检查一个列表是否是另一个列表的子集 list1 = ['12345678\n', '87654321'] list2 = ['01234567','12345678', '87654321', '23456789'] 问题是我的第一个列表,即列表1将始终包含\n,因为我是从一个文件中读取它的,该文件的项目在单独的行中。但是我想忽略此\n并继续比较。我下面的代码总是进入其他部分。是否有任何方法可以在不修改两个列表的情况下实现True场景? 我的代码如下: flag = True
list1 = ['12345678\n', '87654321']
list2 = ['01234567','12345678', '87654321', '23456789']
问题是我的第一个列表,即列表1将始终包含\n,因为我是从一个文件中读取它的,该文件的项目在单独的行中。但是我想忽略此\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'
您可以使用
strip
删除所有空白字符,然后将其与第二个列表中的项目进行比较。此外,您还可以将for循环替换为all
:
>>> all(e.strip() in list2 for e in list1)
True
此外,您可能会考虑在创建list1
时剥离换行符,并使用set
而不是list
来加快查找速度
>>> set(map(str.strip, list1)).issubset(list2)
True