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

如何在嵌套列表verb_list中检索be_verb元素并区分动词单复数

实现方案

核心逻辑

先遍历每个动词组检索是否包含be助动词,再分两类处理单复数变形:

  • 含be动词的词组:仅修改be动词为对应单复数形态,其余实义动词(现在分词形式)保持不变
  • 不含be动词的词组:根据实义动词单三变形规则调整核心动词的形态

完整代码

# 原始输入列表
verb_list = [['was', 'playing'], ['watches'], ['guesses'], ['washes'], ['are', 'enjoying'], ['enjoy', 'playing'], ['are', 'wearing'], ['were', 'throwing']]
be_verb = ['be','am','is','are','was','were','being']

# be动词单复数映射规则
be_to_singular = {'are':'is', 'were':'was', 'be':'is'}
be_to_plural = {'is':'are', 'was':'were', 'be':'are'}

# 实义动词转单数(单三)的规则
def get_singular_verb(verb: str) -> str:
    if verb.endswith(('s', 'x', 'ch', 'sh', 'o')):
        return verb + 'es'
    return verb + 's'

# 主处理流程
processed_result = []
for group in verb_list:
    singular_group = group.copy()
    plural_group = group.copy()
    be_pos = -1
    # 检索当前词组是否包含be动词
    for idx, word in enumerate(group):
        if word in be_verb:
            be_pos = idx
            break
    if be_pos > -1:
        # 含be动词的处理逻辑
        current_be = group[be_pos]
        if current_be in be_to_plural:
            singular_group[be_pos] = be_to_plural[current_be]
        if current_be in be_to_singular:
            plural_group[be_pos] = be_to_singular[current_be]
    else:
        # 不含be动词的实义动词处理逻辑
        core_verb = group[0]
        # 判断原核心动词是否为单三形式
        is_singular_form = False
        if core_verb.endswith('es') and core_verb[:-2].endswith(('s', 'x', 'ch', 'sh', 'o')):
            is_singular_form = True
            origin_verb = core_verb[:-2]
        elif core_verb.endswith('s') and not core_verb.endswith('ss'):
            is_singular_form = True
            origin_verb = core_verb[:-1]
        else:
            origin_verb = core_verb
        # 赋值单复数词组
        if is_singular_form:
            singular_group[0] = core_verb
            plural_group[0] = origin_verb
        else:
            plural_group[0] = core_verb
            singular_group[0] = get_singular_verb(core_verb)
    # 保存当前词组的处理结果
    processed_result.append({
        'original': group,
        'singular': singular_group,
        'plural': plural_group
    })

# 打印输出结果
for item in processed_result:
    print(f"原动词组:{item['original']}")
    print(f"单数动词组:{item['singular']}")
    print(f"复数动词组:{item['plural']}")
    print("-"*20)

运行输出示例

原动词组:['was', 'playing']
单数动词组:['was', 'playing']
复数动词组:['were', 'playing']
--------------------
原动词组:['watches']
单数动词组:['watches']
复数动词组:['watch']
--------------------
原动词组:['guesses']
单数动词组:['guesses']
复数动词组:['guess']
--------------------
原动词组:['washes']
单数动词组:['washes']
复数动词组:['wash']
--------------------
原动词组:['are', 'enjoying']
单数动词组:['is', 'enjoying']
复数动词组:['are', 'enjoying']
--------------------
原动词组:['enjoy', 'playing']
单数动词组:['enjoys', 'playing']
复数动词组:['enjoy', 'playing']
--------------------
原动词组:['are', 'wearing']
单数动词组:['is', 'wearing']
复数动词组:['are', 'wearing']
--------------------
原动词组:['were', 'throwing']
单数动词组:['was', 'throwing']
复数动词组:['were', 'throwing']
--------------------

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:36:02