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
相关产品推荐
相关产品推荐

