我有一个递归函数,在这里我试图展平嵌套列表的列表。我想在找到整数后立即停止递归函数。列表示例为:[[[1.2, 2.3, 3.3], [4.3, [[5]]]], 6.3]
def flatten(arr):
for elem in arr:
if isinstance(elem, collections.Iterable) and not isinstance(elem, (str, bytes)):
return flatten(elem)
else:
if not isinstance(elem, float):
# break out of the recursion
一旦找到一个整数,如何使它停止?
答案 0 :(得分:1)
此时,如果您想将结果传播回去,就dates.df %>%
mutate(date.prime = pmax(as.Date("2019-01-04"), date))
。
例如,如果要返回找到的第一个非浮点数:
return
答案 1 :(得分:1)
要停止for循环,只需使用 break ,代码如下:
def flatten(arr):
for elem in arr:
if isinstance(elem, collections.Iterable) and not isinstance(elem, (str, bytes)):
return flatten(elem)
else:
if not isinstance(elem, int):
break
除了使用break之外,您还可以返回该函数。
答案 2 :(得分:0)
使用“ break”语句。
def flatten(arr):
for elem in arr:
if isinstance(elem, collections.Iterable) and not isinstance(elem, (str, bytes)):
return flatten(elem)
else:
if not isinstance(elem, int):
# break out of the recursion
break
答案 3 :(得分:0)
您的代码没有什么用,但是我可以猜到您正在尝试做什么
return flatten(elem)
flatten()找不到整数时将调用flatten()本身
它的返回值模拟将是这样的:
1(第一轮)。----> 返回flatten()
-----------------> 返回(返回flatten())
-----------------> 返回(返回(返回flatten()))
4.(找到整数)-> 返回(返回(intFound))
为了使3的 return flat()变为4的 intFOund
u需要返回带有整数的flatten()函数,如下所示:
if not isinstance(elem, int):
return elem
最后,您从功能中退出了 intFound