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]
您混合了 n
和 item
。请参阅下面的工作解决方案。
请注意,为了使代码更清晰,修改了变量名。
def big_words(*words):
return [word for word in words if len(word) > 10]
print(big_words('substantiation', "boss", 'wallower', 'substantiation'))
我正在尝试创建一个函数来检查所有输入的单词(使用 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]
您混合了 n
和 item
。请参阅下面的工作解决方案。
请注意,为了使代码更清晰,修改了变量名。
def big_words(*words):
return [word for word in words if len(word) > 10]
print(big_words('substantiation', "boss", 'wallower', 'substantiation'))