提问人:Sukrut Shishupal 提问时间:9/23/2022 最后编辑:Sukrut Shishupal 更新时间:9/23/2022 访问量:77
嵌套列表上的递归
Recursion on nested list
问:
我正在尝试在嵌套列表上使用递归。在这里,我试图获得最内在的元素。
input_list = [1,2,3,4,[5,6,7,[8,9,[10]]]]
list1 = input_list
def sublist1(list, sublist=[]):
if len(list) == 0:
return sublist
else:
sublist.append(list)
sublist1(list[1:], sublist)
print(sublist)
sublist1(list1)
我得到的输出是这样的:
[[1, 2, 3, 4, [5, 6, 7, [8, 9, [10]]]], [2, 3, 4, [5, 6, 7, [8, 9, [10]]]], [3, 4, [5, 6, 7, [8, 9, [10]]]], [4, [5, 6, 7, [8, 9, [10]]]], [[5, 6, 7, [8, 9, [10]]]]]
我尝试更改索引,但它没有给我预期的输出 [10]。 任何帮助将不胜感激。
答:
-2赞
Uday Vikram Singh
9/23/2022
#1
打印(list1[-1][-1][-1])
这会让你 [10]
评论
2赞
mkrieger1
9/23/2022
为什么不只是 ?print([10])
1赞
divyang4481
9/23/2022
#2
这将回答您的嵌套旅行
input_list = [1,2,3,4,[5,6,7,[8,9,[10]]]]
list1 = input_list
def sublist1(list):
if(len(list) > 1):
for l in list:
#print(l)
# print(type(l))
if type(l) == type([]) :
return sublist1(l)
else:
continue
return list
print(sublist1(list1))
评论
0赞
Sukrut Shishupal
9/23/2022
我可以看到我在逻辑上犯了错误的地方。谢谢!!
0赞
blhsing
9/23/2022
为什么不避免覆盖内置函数,而是使用一个 convoled 来获取原始函数?list
type([])
list
0赞
divyang4481
9/23/2022
无需检查列表类型的继承,因此请简单化。
0赞
blhsing
9/23/2022
那不是我的重点。我的观点是,即使您仍然需要内置变量,您也可以使用局部变量覆盖内置变量,然后您需要使用可读性较低的 .不要一开始就覆盖内置列表。将局部变量命名为其他名称。list
list
type([])
2赞
blhsing
9/23/2022
#3
仅当当前给定列表中的任何项是列表时,才能进行递归调用;否则,这意味着当前列表已经是最里面的列表,因此您可以按原样返回列表:
def inner_most(lst):
for i in lst:
if isinstance(i, list):
return inner_most(i)
return lst
input_list = [1,2,3,4,[5,6,7,[8,9,[10]]]]
print(inner_most(input_list))
这输出:
[10]
评论
if len(list) == 0
list
input_list=[[1,2],[3,4]]