我有一个关于递归的问题。
def f6(lst):
result = []
if type(lst[0]) == list:
return f6(lst[0])
else:
result.append(lst[0])
if lst[1]:
return f6(lst[1])
else:
return result
我想从多维列表输入中创建一维列表。
例如,当我放["baa",[4,True,[10, 5],[1,2,['moo']]],['chirp']]
时
,我想采取["baa",4,True,10, 5,1,2,'moo','chirp']
但它在index out of range
if lst[1]:
错误
我不能将lst[1]
用作真/假条件吗?
感谢您的帮助。
答案 0 :(得分:1)
您没有处理列表可以按任意顺序包含任意数量的元素和嵌套列表的条件。您需要初始化一个results
列表,然后在每个元素之间运行一个循环并检查该元素是否是列表的实例(这比type(x) == list
更清晰),如果是,则make递归调用,并扩展results
列表。否则,将该元素附加到results
。
def f6(lst):
result = []
for i in lst:
if not isinstance(i, list):
result.append(i)
else:
result.extend(f6(i))
return result
使用f6(["baa",[4,True,[10, 5],[1,2,['moo']]],['chirp']])
调用此选项会产生:
['baa', 4, True, 10, 5, 1, 2, 'moo', 'chirp']