Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何忽略'\n';在比较两个列表时_List_Python 2.7 - Fatal编程技术网

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