返回空列表

问题描述 投票:0回答:2

嗨我的程序有问题,我尝试检查字母表中的哪些字母没有出现在列表中,不幸的是它返回空列表我不知道为什么

试了很多方法还是不行。。。

import string
def get_missing_letters(s):
    missing =[]
    alphabet = list(string.ascii_lowercase)
    s = list(s)
    for letter in s:
        if letter not in alphabet:
            missing.append(letter)
        return missing
print(get_missing_letters("abcdefgpqrstuvwxyz"))
python python-3.x list return
2个回答
1
投票

你应该用另一种方式检查它。

for letter in alphabet:
    if letter not in s:
        missing.append(letter)

并让你的 return 语句脱离循环。


-1
投票

你有两个问题,

return
发生在第一次迭代之后,你实际上是在检查你的字符串中的字母是否存在于
ascii_lowercase
而不是相反的

def get_missing_letters(s):
    missing = []
    s = list(s)
    for letter in list(string.ascii_lowercase):
        if letter not in s:
            missing.append(letter)
    return missing


print(get_missing_letters("abcdefgpqrstuvwxyz"))
# ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']

找到差异的另一种方法是使用

set

def get_missing_letters(s):
    return set(string.ascii_lowercase).difference(s)
    # or
    return set(string.ascii_lowercase) - set(s)

print(get_missing_letters("abcdefgpqrstuvwxyz"))
# {'j', 'n', 'k', 'l', 'i', 'm', 'o', 'h'}

如果顺序对你很重要,你可以排序

def get_missing_letters(s):
    missing = set(string.ascii_lowercase).difference(s)
    return sorted(missing)


print(get_missing_letters("abcdefgpqrstuvwxyz"))
# ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']
© www.soinside.com 2019 - 2024. All rights reserved.