自定义Python unique()函数循环异常:首次迭代后停止执行问题
问题分析与修复
核心问题
- 函数内部依赖全局变量
l而非传入的参数x,逻辑耦合性强 return语句写在外层for循环内部,第一次迭代就直接返回结果,导致后续循环无法执行count变量未在每次外层循环中重置,会累计所有元素的计数,结果错误
修正后的代码
def uni(x): # 基于传入的参数创建唯一元素集合,避免依赖全局变量 unique_items = set(x) result = [] for item in unique_items: count = 0 # 每次遍历新元素时重置计数 for element in x: if item == element: count += 1 result.append(f"{item}: {count}") # 循环结束后返回所有结果,用换行符拼接成字符串 return '\n'.join(result) l = ["business", "business", "business", "economy", "economy", "economy", "economy", "business", "premium", "business", "first"] xx = uni(l) print(xx)
输出结果
business: 5 economy: 4 first: 1 premium: 1
额外优化思路
如果只是统计列表元素的出现次数,Python内置的collections.Counter可以更简洁实现:
from collections import Counter l = ["business", "business", "business", "economy", "economy", "economy", "economy", "business", "premium", "business", "first"] counts = Counter(l) for item, num in counts.items(): print(f"{item}: {num}")
内容的提问来源于stack exchange,提问作者Raakin Ahmed
相关产品推荐
相关产品推荐

