如果这些单词包含字符串中不存在的字母,则从列表中删除这些单词

时间:2019-01-30 17:08:40

标签: python-3.x

我的句子只有小写字母,没有空格,例如:

sentence = "markeatsbread"

和单词列表,例如:

b_list = ["yogurt","read","beam","drake","june","fire"]

我想创建一个函数,该函数生成一个新列表,其中不包含不能作为上述句子的字谜的单词。

我尝试过:

def list_reducer(sentence,b_list):
count = 0
g_list = []
for word in b_list:
    for i in range(len(word)):
        if word[i] not in sentence:
            break
        else:
            count += 1
            if count == len(word):
                g_list.append(word)       
return g_list

由于某些原因,由于g_list仅包含以下内容,因此代码无法正常工作

["read"]

正确的结果应该是这样:

["read","beam","drake"]

已经有好几天了,但是我仍然不知道代码中的错误在哪里。 我究竟做错了什么? 预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您不必重置每个新单词的计数,因此它总是在增加。 将计数分配移到for循环内。

def list_reducer(sentence, b_list):
g_list = []
for word in b_list:
    count = 0
    for i in range(len(word)):
        if word[i] not in sentence:
            break
        else:
            count += 1
            if count == len(word):
                g_list.append(word)       
return g_list

或者,您可以删除计数并在循环中使用i。

def list_reducer(sentence, b_list):
g_list = []
for word in b_list:
    for i in range(len(word)):
        if word[i] not in sentence:
            break
        else:
            if i == len(word)-1:
                g_list.append(word)       
return g_list