搜索字符串的所有项目的字符串列表

时间:2016-03-19 10:39:32

标签: python string for-loop find iteration

我正在尝试确定search_string的所有元素是否都存在于列表look_here_string中的一个字符串中。出于效率原因,如果不存在一个元素,则从列表中删除该单词。

1 not in dedakloera    
1 not in tuau          
1 in 1abcdefg          
a in 1abcdefg          
b in 1abcdefg          
c in 1abcdefg

这是我要找的输出:

1 not in dedakloera    #correct
1 not in tuau          #correct
1 in 1abcdefg          #correct
a in 1abcdefg          #correct

这是我得到的输出:

end()

脚本似乎过早停止了,但我无法弄清楚代码中的错误。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

更简单的方法是在外部循环中迭代look_here_string

search_string = '1abc'
look_here_string = ['dedakloera', 'tuau', '1abcdefg']
ind_to_remove = []
for i,s in enumerate(look_here_string):
    for e in search_string:
        if not e in s:
            ind_to_remove.append(i)
            print e, 'not in', s
            break
        else:
            print e, 'in', s
for i in ind_to_remove[::-1]:
    del look_here_string[i]

答案 1 :(得分:1)

你可以使用“all”内置函数和列表理解更简洁地写出这个:

>>> search_string = '1abc'
>>> look_here_string = ['dedakloera', 'tuau', '1abcdefg']
>>> [string for string in look_here_string 
            if all(char in string for char in search_string)]

这会创建一个新列表,但它会自动过滤无效字符串。