python - 为什么我的程序返回的是次数而不是数字本身?
问题描述
我试图返回列表中出现奇数次的数字。现在,它正在返回该数字在列表中出现的次数。例如,在这段代码中,返回的是[3, 3, 3]
我希望它返回4
def num_occurrence_lc(arr, num):
lc = [1 for x in arr if x == num]
return sum(lc)
def getOddOccurrence_lc(arr):
"""returns the number stated an odd number of times in the
sequence"""
num_occ_list = [num_occurrence_lc(arr, x) for x in arr]
odd_occ_list = [z for z in [z for z in num_occ_list if z%2!=0]]
return odd_occ_list
print(getOddOccurrence_lc([1,2,4,2,4,1,4]))
解决方案
我相信你在num_occurrence_lc(arr, num)
. 您正在存储计数而不是数字本身。请尝试以下操作:
from collections import namedtuple
def count_num(arr, num):
return arr.count(num)
def getOddOccurrence_lc(arr):
count_tup = namedtuple('num_count', ['num', 'count'])
arr_counts = [count_tup(str(num), count_num(arr, num)) for num in list(set(arr))]
odd_arr_counts = [int(tup.num) for tup in arr_counts if tup.count%2 != 0]
return odd_arr_counts
如果你运行print(getOddOccurrence_lc([1,2,4,2,4,1,4]))
,你会得到输出:
>>> print(getOddOccurrence_lc([1,2,4,2,4,1,4]))
[4]
我将输出设为列表而不是单个数字的原因是为了概括arr
输入,以考虑到可能有多个数字出现奇数的可能性。因此,例如,print(getOddOccurrence_lc([1,2,4,2,4,1,1,4]))
您将获得:
>>> print(getOddOccurrence_lc([1,2,4,2,4,1,1,4]))
[1, 4]
推荐阅读
- python - Seaborn 热图将多个标签组合为 xticks
- javascript - 单个 if 条件的行为(省略 else 返回 false)
- javascript - PHP中的倒数计时器重新启动
- c# - 如何管理为身份服务器和 Web Api 提供良好的数据库基础架构?
- powershell - 在 PowerShell 中创建字典时是否考虑了重复键?
- java - 如何通过凌空获得对象
- r - 如何在不将其设为数组的情况下创建基本 JSON 元素
- python - 为什么单个树的 xgboost 回归预测存在差异?
- jenkins - 在 Jenkins 的 groovy 共享库中使用 Ant 库
- json - 从 json 文件中的唯一 ID 中提取元素