37,743
社区成员




raw = ['PCXXX', ['0078', 8831], ['0000', '7777']]
raw = ['PCXXX', ['0078', 8831], ['0000', '7777']]
def get_data(datas):
for item in datas:
if isinstance(item, (str, int)):
print(item, type(item))
else:
get_data(item)
get_data(raw)
raw = ['PCXXX', ['0078', 8831], ['0000', '7777']]
def get_data(datas):
for item in datas:
if isinstance(item, (str, int)):
if item == '0000':
return item
else:
return get_data(item) # 这里加不加前面的return都一样
x = get_data(raw)
print(x)
raw = ['PCXXX', ['0078', 8831], ['0000', '7777']]
def get_data(datas):
for item in datas:
if isinstance(item, (str, int)):
if item == '0000':
return item
else:
return get_data(item) # 问题出在这里,函数中如果没有遇到return的话,python默认会返回None,因此运行到raw当中第一个list,如果没有找到match的元素,就不会去寻找下一个list而是返回None
x = get_data(raw)
print(x)
可以改成这样:
raw = ['PCXXX', ['0078', 8831], ['0000', '7777']]
def get_data(datas):
for item in datas:
if isinstance(item, (str, int)):
if item == '0000':
return item
else:
if(get_data(item)!=None):#这里其实加一个中间变量temp=get_data(item),再直接判断temp运行效率更高
return(get_data(item))
x = get_data(raw)
print(x)