You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术求助:如何检查列表中相邻字符串是否具有相同首字母

解决相邻单词首字母检查问题

嘿Paul,我来帮你搞定这个需求!你前面的分词和转小写步骤都做得很对,但生成嵌套列表这一步其实没必要——我们要取单词的首字母,直接用word[0]就能拿到(Python里字符串可以像列表一样通过索引访问字符,首字母是索引0,不是1哦,你之前写的myString_words_lower[x][1]会拿到第二个字符)。

下面给你两种简单的实现方法,都能帮你找出首字母相同的相邻单词:

方法一:用索引遍历列表

这种方法适合新手理解,通过索引逐个访问相邻的单词:

import nltk

myStrings = "Bob build a house"
myStrings_words = nltk.word_tokenize(myStrings)
# 转成小写,方便忽略大小写比较
myStrings_words_lower = [word.lower() for word in myStrings_words]

# 从第2个单词开始遍历(索引1),和前一个单词(索引i-1)比较
for i in range(1, len(myStrings_words_lower)):
    prev_word = myStrings_words_lower[i-1]
    curr_word = myStrings_words_lower[i]
    # 比较两个单词的首字母
    if prev_word[0] == curr_word[0]:
        print(f"首字母相同的相邻单词:{prev_word} 和 {curr_word}")

运行这段代码,会输出:

首字母相同的相邻单词:bob 和 build

方法二:用zip配对相邻单词(更Pythonic)

zip函数可以把两个列表的元素一一配对,我们把原列表和它的切片(从第2个元素开始)传入,就能直接得到相邻的单词对,代码更简洁:

import nltk

myStrings = "Bob build a house"
myStrings_words = nltk.word_tokenize(myStrings)
myStrings_words_lower = [word.lower() for word in myStrings_words]

# zip会把(myStrings_words_lower[0], myStrings_words_lower[1]), (myStrings_words_lower[1], myStrings_words_lower[2])... 配对成元组
for prev_word, curr_word in zip(myStrings_words_lower, myStrings_words_lower[1:]):
    if prev_word[0] == curr_word[0]:
        print(f"首字母相同的相邻单词:{prev_word} 和 {curr_word}")

这段代码的输出和方法一完全一样,但写法更简洁,是Python里常用的处理相邻元素的技巧。

小提示

如果你需要把结果存起来而不是直接打印,可以创建一个列表来收集符合条件的单词对:

matching_pairs = []
for prev_word, curr_word in zip(myStrings_words_lower, myStrings_words_lower[1:]):
    if prev_word[0] == curr_word[0]:
        matching_pairs.append((prev_word, curr_word))

print("所有首字母相同的相邻单词对:", matching_pairs)

输出会是:

所有首字母相同的相邻单词对: [('bob', 'build')]

内容的提问来源于stack exchange,提问作者paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 02:38:09