我有一个由字符串列表组成的列表:
my_list = [[u'Port Name Status'],
[u'Int1 London connected'],
[u'Int2 Paris A disconnected'],
[u'Port3 Paris A Backup disabled']]
我曾考虑过用(“”)分隔每个字符串,并像以前那样创建元组,但由于有些名称是分开的,所以这行不通。你知道吗
我想在每个字符串中搜索另一个列表中的项目,如果它存在,请从我的\列表中弹出它,我的完整代码是
my_list = [[u'Port Name Status'],
[u'Int1 London connected'],
[u'Int2 Paris A disconnected'],
[u'Port3 Paris A Backup disabled']]
remove_from_list = ['Port', 'connected']
for i in my_list:
for j in remove_from_list:
if j in i:
my_list.pop(i)
除了不工作,我也知道我的代码不是很python,有没有更好的方法与列表理解做到这一点?你知道吗
我只希望删除完全匹配的项,因此保留断开的项,但删除连接。你知道吗
此列表应满足您的要求:
这就产生了
它使用了您提到的思想:拆分条目,然后使用^{} 检查结果列表中是否包含任何单词。你知道吗
更多解释:
收益率
这是我们在列表理解中创建的一个新列表;每个字符串被拆分,得到一个单词列表。现在我们必须检查这些子列表中是否有任何所需的字符串,我们可以通过另一个列表来完成:
此列表理解返回一个带有布尔变量的列表,说明是否找到了
remove_from_list
中的元素。检查此列表是否至少包含一个等于True
的元素的快速方法是使用any
:以及
现在我们可以把这些结合起来,在开头列出要表达的理解,这就给我们留下了想要的结果。你知道吗
另外,如果要基于正则表达式进行拆分,可以执行以下操作:
这给了
与上面的不同之处在于,现在每个子列表的结果总是只有三个字符串,因为您现在只拆分了至少两个空格。我认为这是您最初的想法;在您的例子中,它没有什么区别,因为
remove_from_list
只包含单个单词,但是如果remove_from_list
中的字符串包含空格,第一种方法将失败:那么您应该使用带有正则表达式的方法。你知道吗整个命令就是
同样屈服
相关问题 更多 >
编程相关推荐