1 回答

TA貢獻1779條經驗 獲得超6個贊
在第一次檢查中,去掉 中的逗號和空格err:
for z in n:
if type(z)==list:
x=Validate(z)
if x!='':
err='%s%s' % (err,x) # instead of: err='%s%s, ' % (err,x)
# this will print "Result: err1, err2, suberr1, lasterr, "
對于您的問題,一個可能更Pythonic(或至少更通用)的解決方案可能是編寫一個生成器來遍歷嵌套列表:
def traverse(o, tree_types=(list, tuple)):
if isinstance(o, tree_types):
for value in o:
for subvalue in traverse(value, tree_types):
yield subvalue
else:
yield o
然后您可以使用它根據您的條件檢查每個元素:
>>> a = [n if 'err' in n else '' for n in traverse(testpar)]
['', 'err1', 'err2', 'suberr1', '', '', 'lasterr']
>>> print(", ".join(filter(len,a))) # remove empty strings, convert list to prettier string
'err1, err2, suberr1, lasterr'
添加回答
舉報