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

Python使用lambda排序字符串列表后取首元素拆分为单字符问题

问题原因
  • 你的函数返回类型标注为List[str],要求返回字符串列表,但merge[0]是单个字符串对象,并非包含该字符串的列表。
  • Python中字符串是可迭代对象,如果你后续代码把返回的单个字符串当做列表处理(比如执行list()转换、直接遍历),就会把字符串的每个字符拆分为独立的列表元素,最终得到["S","h","o","g","u","n"]的结果。
修复方法

只要把返回单个字符串的逻辑,改为返回包含该元素的列表即可:

# 原错误写法
return merge[0]

# 修改后写法
return [merge[0]]
可选优化建议

你当前用集合取交集再调用index计算索引和的逻辑可以正常运行,但如果列表长度较大,多次调用index会产生额外的O(n)开销,可以提前给列表建立元素到索引的映射,提升运行效率,同时也能兼容多个元素索引和相同的场景:

from typing import List

def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
    idx1 = {name: i for i, name in enumerate(list1)}
    min_total = float('inf')
    res = []
    for i2, name in enumerate(list2):
        if name in idx1:
            total = i2 + idx1[name]
            if total < min_total:
                min_total = total
                res = [name]
            elif total == min_total:
                res.append(name)
    return res

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:03