如何修改Python的counter函数使其支持列表输入并返回列表结果
实现方法
有几种简单的方式可以让这个函数支持列表参数并返回列表结果:
方法1:直接修改原函数,兼容单个数字和列表输入
修改后的函数会先判断输入类型,列表输入就遍历处理每个元素,单个数字则按原逻辑执行:
def counter(num): # 处理列表输入 if isinstance(num, list): result = [] for n in num: count = 0 current = n while current != 0: if current % 2 == 0: current /= 2 else: current -= 1 count += 1 result.append(count) return result # 处理单个数字输入 count = 0 while num != 0: if num % 2 == 0: num /= 2 else: num -= 1 count += 1 return count
调用示例:
print(counter([3, 6, 8])) # 输出 [3, 4, 4] print(counter(5)) # 输出 4
方法2:保留原函数,新增包装函数
不改动原函数逻辑,写一个专门处理列表的函数,内部调用原counter:
def counter(num): count = 0 while num != 0: if num % 2 == 0: num /= 2 else: num -= 1 count += 1 return count def counter_list(num_list): return [counter(num) for num in num_list]
调用示例:
print(counter_list([3, 6, 8])) # 输出 [3, 4, 4]
方法3:直接用列表推导式调用原函数
如果不想新增函数,调用时直接用列表推导式批量处理:
num_list = [3, 6, 8] result = [counter(num) for num in num_list] print(result) # 输出 [3, 4, 4]
内容的提问来源于stack exchange,提问作者Kayla
相关产品推荐
相关产品推荐

