我正在尝试确定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()
脚本似乎过早停止了,但我无法弄清楚代码中的错误。非常感谢您的帮助!
答案 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)]
这会创建一个新列表,但它会自动过滤无效字符串。