我该如何制作功能。显示所有不良值而不只是一个?
def get_bad_results(person_results):
for i in person_results:
if i[1]>i[3] or i[1]<i[2]:
return i[0]
test_results = [["White blood cells",8.5,2,7],
["Neutrophils",5.3,2.5,5],
["Red blood cells", 12.4, 9,15]]
a = get_bad_results(test_results)
print a
显示White blood cells
而不是
White blood cells, Neutrophils
答案 0 :(得分:5)
您的count_healthy()
函数没有return
一个值,因此b
为None
。由于该函数执行打印,然后是print b
,它解释了函数输出后None
的输出。
基本上,一个应该进行计数的函数可能不应该也打印结果,而应该return
它以便调用者可以决定应该打印结果或处理方式不同。
答案 1 :(得分:1)
您的函数没有return
语句,因此隐式返回None
。
尝试添加return
语句并返回您要打印的值。
答案 2 :(得分:1)
正如您期望每次调用多次结果一样,最好使用生成器函数:
def get_bad_results(person_results):
for i in person_results:
if i[1]>i[3] or i[1]<i[2]:
yield i[0]
或生成器表达式:
def get_bad_results(person_results):
return (i[0] for i in person_results if i[1]>i[3] or i[1]<i[2])
这样
test_results = [["White blood cells",8.5,2,7],
["Neutrophils",5.3,2.5,5],
["Red blood cells", 12.4, 9,15]]
for i in get_bad_results(test_results):
print i
print list(get_bad_results(test_results))
print ", ".join(get_bad_results(test_results))
给出输出
White blood cells
Neutrophils
['White blood cells', 'Neutrophils']
White blood cells, Neutrophils
对于其他功能,请执行
def count_healthy(all_results):
counter = 0
for i in all_results:
if len(list(get_bad_results(i))) == 0:
counter += 1
return counter
或只是
def count_healthy(all_results):
return sum(1 for i in all_results if len(list(get_bad_results(i))) == 0)
编辑:
对于许多get_bad_results()
,将其转换为列表可能会占用大量内存。
因此,您可以使用
代替len(list(get_bad_results(i))) == 0
def has_results(it):
"""Returns True if the iterator it yields any items."""
return next((True for _ in it), False)
然后
def count_healthy(all_results):
return sum(1 for i in all_results if not has_results(get_bad_results(i)))
答案 3 :(得分:0)
您正在尝试打印功能结果
a = get_bad_results(test_results)
print a
b =count_healthy(all_results)
print b
默认情况下,函数返回无
答案 4 :(得分:0)
好的我修好了但是现在
def get_bad_results(person_results):
for i in person_results:
if i[1]>i[3] or i[1]<i[2]:
return i[0]
test_results = [["White blood cells",8.5,2,7],
["Neutrophils",5.3,2.5,5],
["Red blood cells", 12.4, 9,15]]
a = get_bad_results(test_results)
print a
显示White blood cells
而不是White blood cells, Neutrophils