我在以下函数中出错,该函数为lambda x: f'{x:b}'
。
当我将'NoneType' object is not iterable
函数放在循环外时,它可以正常工作,为什么它在这里不起作用?
print(max())
答案 0 :(得分:0)
freq
是循环之前的列表,然后在循环的第一次迭代中调用
while (sum<target):
sum+=max(freq) #error thrown here
res.append(max(freq))
freq=freq.remove(max(freq))
列表的remove方法始终返回None。因此,您基本上将此None
存储为freq的值。因此,现在您已将频率从列表更改为无。因此,在下一次迭代中,您会得到错误。
仅调用freq.remove(max(freq))
本身就不会尝试将结果分配给freq
while (sum<target):
sum+=max(freq) #error thrown here
res.append(max(freq))
freq.remove(max(freq))
答案 1 :(得分:0)
请检查一下。您在 freq = freq.remove(max(freq))中出错。无需分配回相同的freq变量。因为在脚本运行之前,该列表对象的id保持不变。
def minSetSize(arr) -> int:
target = len(arr) / 2
sum = 0
res = []
hash_dict = {x: arr.count(x) for x in arr}
freq = list(hash_dict.values())
while sum < target:
sum += max(freq)
res.append(max(freq))
freq.remove(max(freq)) # error was here here
return len(res)
print(minSetSize([1,2,5,7,3, 53]))