下面为列表无法正确递归的代码:
raw = ['1001', ['2001','2002'], ['3001', '3002']]
def clean_data(datas):
for item in datas:
if isinstance(item, str):
if item == '3002':
return item
else:
return clean_data(item)
x = clean_data(raw)
print(x)
运行代码结果会返回None,出现这种情况因为在函数运行到列表中第1个列表时,由于这个列表没有符合条件的数据,他会默认返回None,不会去寻找下一个列表。此时,只要在列表中添加如下:
raw = ['1001', ['2001','2002'], ['3001', '3002']]
def clean_data(datas):
for item in datas:
if isinstance(item, str):
if item == '3002':
return item
else:
if (clean_data(item) != None):
return clean_data(item)
x = clean_data(raw)
print(x)
便可正确运行。