如果有负值,如何让python停止查找



我有一条格言:

ff = {("Tom Brady",45678 ): [[456.0, 4050.0], [0.32, 5.6]]}

f = {("Tom Brady",45678 ): [[456.0, 4050.0, -1000.0], [0.32, 5.6, 4.56]]}

我有这个代码:

def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int
for a in client_list[client][0]: 
if a>0:
return 2
if a<0
return 1

这个代码的问题是,当没有负值时,python会给我一个错误,告诉我它不能是NoneType。如果有否定的结果,我希望代码给我一个答案,但它只会给我一条错误。

您当前的逻辑是:

def help_find_neg(lst: list[float]):
for element in lst: 
if element > 0:
return 2
if element < 0:
return 1
# and if element == 0: go to the next element

如果lst仅由零组成,则函数将跳过所有零(并返回None(。

这可能是NoneType错误背后的原因。

您可以将列表列表(字典中的值(制成一个大列表,然后使用列表理解创建一个只包含负数的新列表。如果此列表理解结果的长度大于0,则字典值中的任何列表中都有负数。

def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int:
big_list = sum(client_list[client], [])
negatives = [i for i in big_list if i < 0]
if len(negatives) > 0:
return True
return False

(sum是从列表列表中创建一个列表的小技巧(。

根据意见;如果你只需要知道是否是一个负数(你永远不需要知道这些是什么数字(,你可以简化:

def find_neg (client_list: dict[tuple[str, int], list[list[float]]], client: tuple[str, int]) -> int:
big_list = sum(client_list[client], [])
for i in big_list:
if i < 0:
return True
return False

最新更新