题目: 寻找双词组 (Python)
编写一个名为 find_bigrams
的函数,该函数接收一个句子或段落的字符串,并按顺序返回其所有双词组的列表。
注意: 双词组是指连续的两个单词。
示例:
输入:
sentence = """
Have free hours and love children?
Drive kids to school, soccer practice
and other activities.
"""
输出:
def find_bigrams(sentence) ->
[('have', 'free'),
('free', 'hours'),
('hours', 'and'),
('and', 'love'),
('love', 'children?'),
('children?', 'drive'),
('drive', 'kids'),
('kids', 'to'),
('to', 'school,'),
('school,', 'soccer'),
('soccer', 'practice'),
('practice', 'and'),
('and', 'other'),
('other', 'activities.')]
答案
解题思路
解决这个问题的关键在于将输入的句子或段落分割成单词,并找到所有相邻的单词对。我们可以使用 Python 的字符串处理方法来实现这个功能。具体步骤如下:
- 移除输入字符串的换行符,并将其转换为小写以确保一致性。
- 使用
split()
方法将字符串按空格分割成单词列表。 - 使用列表推导式或循环生成所有相邻的单词对。
答案代码
def find_bigrams(sentence):
# 去掉换行符并将字符串转换为小写
sentence = sentence.replace('\n', ' ').lower()
# 按空格分割字符串以获取单词列表
words = sentence.split()
# 生成所有相邻的单词对
bigrams = [(words[i], words[i + 1]) for i in range(len(words) - 1)]
return bigrams
# 示例输入
sentence = """
Have free hours and love children?
Drive kids to school, soccer practice
and other activities.
"""
# 打印输出
print(find_bigrams(sentence))
sentence.replace('\n', ' ')
: 将字符串中的换行符替换为空格。sentence.lower()
: 将字符串转换为小写。sentence.split()
: 将字符串按空格分割成单词列表。[(words[i], words[i + 1]) for i in range(len(words) - 1)]
: 使用列表推导式生成所有相邻的单词对。
更多详细答案可关注公众号查阅。