Python 3.x 在函数中以小写形式返回唯一单词:/
我试图从一个小写的句子中获得所有独特的3个字符的单词,但我不确定为什么它不起作用 句子=“在不太冷的天气里,我们可能会找到一只熊” 单词列表=获取唯一字母单词(句子) 打印(单词列表) ['may'、'not'、'the'、'too']Python 3.x 在函数中以小写形式返回唯一单词:/,python-3.x,Python 3.x,我试图从一个小写的句子中获得所有独特的3个字符的单词,但我不确定为什么它不起作用 句子=“在不太冷的天气里,我们可能会找到一只熊” 单词列表=获取唯一字母单词(句子) 打印(单词列表) ['may'、'not'、'the'、'too'] def get_unique_3_letter_words(text): result = [] for x in text.split(): if len(x)==3 and (x not in result):
def get_unique_3_letter_words(text):
result = []
for x in text.split():
if len(x)==3 and (x not in result):
result.append(x)
result.sort()
return result.lower()
可以使用集合选择唯一的图元:
def get_unique_3_letter_words(text):
"""returns a sorted list of unique 3 letter words from text,
converted to lower case.
"""
result = set()
for x in text.split():
if len(x) == 3:
result.add(x.lower())
return sorted(list(result))
可以使用集合选择唯一的图元:
def get_unique_3_letter_words(text):
"""returns a sorted list of unique 3 letter words from text,
converted to lower case.
"""
result = set()
for x in text.split():
if len(x) == 3:
result.add(x.lower())
return sorted(list(result))
在原始代码中,除了最后一行之外,它看起来应该可以工作。您不能在列表中调用
lower
改变
result.append(x)
到
改变
return result.lower()
到
尽管如此,这并不是一个有效的解决方案。代码必须为每个单词搜索整个解决方案集。最具吸引力的解决方案是使用集合理解
def get_unique_3_letter_words(text):
return sorted({x.lower() for x in text.split() if len(x) == 3})
在原始代码中,除了最后一行之外,它看起来应该可以工作。您不能在列表中调用
lower
改变
result.append(x)
到
改变
return result.lower()
到
尽管如此,这并不是一个有效的解决方案。代码必须为每个单词搜索整个解决方案集。最具吸引力的解决方案是使用集合理解
def get_unique_3_letter_words(text):
return sorted({x.lower() for x in text.split() if len(x) == 3})
您可以使用您已有的技术,只需将小写单词与自身进行比较,如下所示:
def get_unique_3_letter_words(text):
result = []
split_text = text.split()
for word in split_text:
if len(word) == 3 and word.lower() == word and word not in result:
result.append(word)
result.sort()
return result
sentence = "In the the not too too may extreme cold we may find a bear"
words_list = get_unique_3_letter_words(sentence)
print(words_list)
结果
['may', 'not', 'the', 'too']
您可以使用您已有的技术,只需将小写单词与自身进行比较,如下所示:
def get_unique_3_letter_words(text):
result = []
split_text = text.split()
for word in split_text:
if len(word) == 3 and word.lower() == word and word not in result:
result.append(word)
result.sort()
return result
sentence = "In the the not too too may extreme cold we may find a bear"
words_list = get_unique_3_letter_words(sentence)
print(words_list)
结果
['may', 'not', 'the', 'too']
这会以小写形式返回吗?是的,在添加到
集合时,单词
会转换为小写
,这会以小写形式返回吗?是的,单词
在添加到集合时会转换为小写
,谢谢,但这会两次返回“the”?如何纠正这一点,使3个字母的单词只返回一次?我添加了一个带有的修复程序,单词不在结果中:
。这解决了您提到的问题。谢谢,但这会返回两次“the”?如何纠正这一点,使3个字母的单词只返回一次?我添加了一个带有的修复程序,单词不在结果中:
。这就解决了你提到的问题。