python 中使用长度函数过滤字符串的 if 语句的问题

problem with if statement using length function for filtering strings in python

我正在尝试创建一个函数来检查所有输入的单词(使用 args 的可变数量的单词)和 returns 所有超过 10 个字符的单词。

这是我的代码:

def big_words(*n): #'*' allows variable amount of arguments

"""function to provide list of words with more than 10 characters.
allows multiple words to be processed"""

    return [item for item in n if len(str(n))>10]

big_words('substantiation', "boss", 'wallower', 'substantiation')

预期输出:

['substantiation', 'substantiation']

实际输出:

['substantiation', 'boss', 'wallower', 'substantiation']

为什么函数不删除 'boss' 和 'wallower'?

我是编码新手,所以感谢大家的帮助

因为你的 if 语句要求 n 的长度作为一个字符串,而不是单词的长度

return [item for item in n if len(item) > 10]

您混合了 nitem。请参阅下面的工作解决方案。

请注意,为了使代码更清晰,修改了变量名。

def big_words(*words):
    return [word for word in words if len(word) > 10]


print(big_words('substantiation', "boss", 'wallower', 'substantiation'))