Python递归提取嵌套列表唯一元素运行结果异常问题咨询
问题原因分析
- 核心逻辑漏洞:你在判断元素为列表时,虽然执行了递归调用
unique(item),但没有将该调用返回的子列表唯一元素集合合并到当前层级的result中,所有嵌套层级的元素计算结果都被直接丢弃,只有最外层的非列表元素会被加入最终返回的集合,因此出现结果缺失的问题。
修正后的代码
def unique(L): ''' Returns set of unique elements in nested list L Ex. unique([ 2, 1, 4, [ 3, [3, 4], 2 ], [2, 5, 6], 4, [ 2, 1 ]]) returns: {1, 2, 3, 4, 5, 6} ''' result = set() for item in L: if isinstance(item, list): # 将递归得到的子列表元素合并到当前结果集 result.update(unique(item)) else: result.add(item) return result
验证测试
运行测试代码print(unique([ 2, 1, 4, [ 3, [3, 4], 2 ], [2, 5, 6], 4, [ 2, 1 ]])),即可得到正确输出{1, 2, 3, 4, 5, 6}。
内容的提问来源于stack exchange,提问作者Apparent
相关产品推荐
相关产品推荐

