在列表中查找一封信

时间:2017-09-26 00:39:49

标签: python string list boolean letter

我遇到一个问题:编写一个函数,它接受一个列表和一个字符串作为参数,并根据字符串中的所有字母是否出现在列表中的某个位置返回一个布尔值。这是我到目前为止所拥有的。

def findLetters(myList, myString):
    for letter in myString:
        if letter in myList:
            return True
    return False

3 个答案:

答案 0 :(得分:1)

这是一个基本的解决方案,更接近你的开始:

def findLetters(myList, myString):
    found_all = False
    for s in myString:        # check each letter in the string
        if s in myList:       # see if it is in the list
            found_all = True  # keep going if found
        else:
            found_all = False # otherwise set `found` to False 
            break             # and break out of the loop

    return found_all          # return the result

result = findLetters(['a', 'l', 'i', 's', 't'], 'mlist')

# 'm' is not in the list
print result # False 

# all letters in the string are in the list; 
# ignores any extra characters in the list that are not in the string
result = findLetters(['a', 'l', 'i', 's', 't', 'p'], 'alist')

print result # True 

答案 1 :(得分:0)

如果myString中的任何字母匹配,则返回True,而不是myString中的所有字母。 你可以反过来做,如果myString中的任何字母不匹配,则返回False

def findLetters(myList, myString):
    for letter in myString:
        if letter not in myList:
            return False
    return True

或使用内置函数all

def findLetters(myList, myString):
  return all(letter in myList for letter in myString)

答案 2 :(得分:0)

您可以使用lambda映射所有字母,为my_string中的所有字母创建布尔值列表。

如果all列表中的所有值都为true,则函数l会返回True

def find_letters(my_list, my_string): 
    l = map(lambda x: x in my_list, my_string)
    return all(l)

print(find_letters(['a', 'b', 'c'], 'cab'))